【发布时间】:2012-10-29 08:14:09
【问题描述】:
如何在面向 unix 的 Ubuntu 机器上使用 GCC 静态编译应用程序?我将如何定位 32 位/64 位机器和具有不同版本 GLIBC 或任何 unix C++ 应用程序通常依赖的机器?然后我想以二进制形式分发这个应用程序并在 unix 机器上运行它,而不需要从源代码编译。
同样,我可以compile this app on Windows such that it will run on unix吗?
【问题讨论】:
-
一般来说,您不能“以 Unix 为目标”。如果您构建 Linux 二进制文件,它将仅在 Linux 系统上运行。 FreeBSD 有一个 Linux 兼容层,但这是唯一的例外。该二进制文件无法在 Mac OS X、Solaris 或其他 Unix 系统上运行。
-
如果你想证明自己在不同的 unix 机器上使用不同版本的 clib 和标准库,你需要标志 -static-libgcc 和 -static-libstdc++。这会将它们嵌入文件中,因此您不依赖于将运行它的系统上的 .so 文件
-
@Rolle - 您能否添加您的评论作为答案?它非常有用。
标签: c++ windows unix gcc compiler-construction