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

How to generate executable file that can run on both Unix and Linux?

本文关键字:Linux 运行 可执行文件 Unix 何生成      更新时间:2023-10-16

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

POSIX.1标准保证了源代码的兼容性。这就是说,每个使用POSIX.1 api编写的程序都可以保证在任何POSIX平台上编译和运行。POSIX没有也从来没有保证二进制文件在不同的平台之间是可移植的,即使它们都是兼容的。

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

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

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

这不仅仅是二进制生成,您的链接器将链接您的系统使用的库。这已经在不同的linux发行版上有所不同了!如果你真的想创建一个独立于平台的二进制文件,请使用Java或使用llvm编译c++程序。

当你将C代码编译成llvm字节码时,它可以用lli来解释。您可以向lili提供所需的所有本机。so文件,它将能够执行代码。我对结果很满意。