如何生成可在Unix和Linux上运行的可执行文件?

时间:2014-05-26 05:36:27

标签: c++ c g++

我正在使用g ++(在linux下)编译一段c代码。编译后的可执行文件在linux上运行良好。但它不会在unix(SunOS)上运行。如何使编译的文件在Unix和Linux上运行?谢谢。

3 个答案:

答案 0 :(得分:4)

POSIX.1标准保证了niveau源代码的兼容性。这是为了使用POSIX.1 API而编写的每个程序都可以保证在任何POSIX平台上编译和运行。 POSIX不会也绝不保证二进制文件可以在不同平台之间移植,即使它们都符合要求。

不要假设您可以在不同平台上执行相同的二进制文件。虽然有一些工具包可以提供不同级别的仿真,但这并不起作用。

对于执行Linux二进制文件的特殊情况,有一些解决方案,如lxrun for Solaris或内置系统调用转换层,将Linux映射到FreeBSD上的FreeBSD系统调用。

答案 1 :(得分:3)

lxrun是一个实用程序,它允许Linux二进制文件在各种类似Unix的平台上运行,包括Solaris。

答案 2 :(得分:-6)

不仅是二进制生成,您的链接器将链接您的系统使用的库。这已经在不同的Linux发行版上有所不同!如果你真的想创建一个独立于平台的二进制文件,请使用Java或使用llvm编译你的C ++程序 当您将C代码编译为llvm字节码时,可以使用lli进行解释。您可以为lli提供所需的所有本机.so文件,并且它将能够执行代码。我对结果非常满意。