3

如果我有在 Solaris 8 和 10 下编译的代码,现在有一个供应商想在 Linux 下使用我的 bin/exe。会不会有兼容性问题?

我很确定我需要在 Linux 操作系统下编译/链接才能使其 100% 工作,但我只是想知道是否有人可以告诉我为什么它不能在 Linux 上工作,即使 exe 拥有一切并且在那里它没有什么动态的,因为它不需要任何进一步的东西来运行它。除非我们谈论运行时库,否则如果不匹配可能会导致 exe 失败。

4

2 回答 2

8

您必须在 Linux 上重新编译您的应用程序。

与 Solaris 相比,Linux 是完全不同的运行时。即使您已经静态编译了您的应用程序,这两个操作系统之间对内核的接口/系统调用也是不同的。处理器架构也可能不同,例如 SPARC 与 X86。

Solaris 和 Linux 都支持大多数标准 C 和 Posix API,所以如果你没有使用过任何 Solaris 独有的 API,在 Linux 上重新编译通常没什么大不了的 - 但你应该彻底测试一切,并注意任何字节顺序,以及潜在的 64 位与 32 位问题。

于 2011-02-15T21:10:01.223 回答
2

我认为不允许您的 Solaris 二进制文件开箱即用地在 Linux 上运行的其他事情是:

  1. 硬件架构:
    1.1 Solaris 通常运行在 Sun 自己的 SPARC 机器上,尤其是 8-10 也可以运行在 Intel 架构上;
    1.2 Linux 通常运行在 Intel 机器上(虽然它可以运行在 Sparc 机器上)。

  2. 编译器:
    2.1 Solaris 8 使用 Sun 自己的编译器(Sun WorkShop 6+)和标准库实现(因此您将有不同的库名称、ABI 不兼容等)。Solaris 10 实际上带有 gcc,但您可能没有使用它(我猜您只是在 Solaris 8 上构建);
    2.2 Linux 使用 g++,库名称、ABI 不兼容等与上述相同。

于 2011-02-15T21:30:22.920 回答