C++ 在 Mac OS X 上编译代码并在 Linux x86 上运行

Posted

技术标签:

【中文标题】C++ 在 Mac OS X 上编译代码并在 Linux x86 上运行【英文标题】:C++ Compile code on Mac OS X and run it on Linux x86 【发布时间】:2013-07-09 00:11:53 【问题描述】:

我正在开发一个模拟器,我使用XCodeBoost 库在我的Mac OS 10.6 上进行了编码。我想在我的大学服务器上运行它(一些Linux Red Hat x86),但是在服务器上运行由XCode生成的可执行文件时:“./simulator: Exec format error. Wrong Architecture”。显示出来。

我无法在服务器上编译我的代码,因为 Boost 没有安装,我没有安装它的权利。

如何生成可以在此 Linux 服务器上运行的可执行文件?使用 XCode 还是命令行?

注意:我可以在我的计算机上运行我的代码,但在服务器上会快得多。

【问题讨论】:

本地编译通常很好——在服务器上构建它。服务端架构不同,需要在该架构下编译。 你需要一个交叉编译器。建造一个通常的先决条件是献祭处女。这是可能的,但对于任何类型的大学工作来说,这是一个大量切线 - 将程序更改为仅使用目标环境中可用的库可能更容易。 另外,由于 Boost 库大多是仅头文件,您不能将它们的源代码包含在您的项目中并以这种方式在 uni 机器上构建它吗?同样,没有理由需要在目标机器上安装 如果你是自虐狂,你可以做的是为 OS X 编译,然后run the OS X binary on Linux。 @millimoose 是的,这是可能的。我对时间很着迷,但我不太了解 Boost 的实现细节来尝试它。似乎很容易错过依赖项。我想我会用我的眼睛哭泣...... 【参考方案1】:

如果您有一定的冒险精神,您可以安装一个虚拟机,例如 virtualbox,在虚拟机中安装相同版本的 Linux,您就可以完全安装所需的任何软件包。在您的 VM 中构建一个可执行文件并在您的学校服务器上运行它。

只要确保您的 RH 版本与编译器和 C/C++ 库匹配,否则您的可执行文件可能无法运行

【讨论】:

【参考方案2】:

您无需安装 Boost 即可使用它;特别是如果您使用的是完全包含在头文件中的 Boost 库,这是 Boost 的大多数库。您只需在源代码中包含这些 Boost 标头,它应该可以正常编译。

如需将所需的 Boost 标头与源代码捆绑在一起的简单方法,请查看 Boost 的 BCP 工具。

【讨论】:

是的,我这样做了,它运行得很好。【参考方案3】:

您需要“交叉编译”。即在不同的平台上构建一个 linux exe。

一些编译器会这样做 - 其他人不会。不确定 Mac 的。

正如其他人所说:如果您的编译器不会交叉编译到 linux,那么在 VM 中完成这一切可能是最简单的解决方案。

【讨论】:

你可以安装一个 redhat Vm 并在其中构建。好点子。 安装 RedHat 很昂贵。从字面上看。 不,不是。您可以从网上下载 ISO 并免费使用。你只是没有得到支持 或者使用类似 Red Hat 的软件,例如 Fedora、CentOS、Scientific Linux……

以上是关于C++ 在 Mac OS X 上编译代码并在 Linux x86 上运行的主要内容,如果未能解决你的问题,请参考以下文章

在 mac os 上编译 dlib

如何使用 GCC-MP-4.7 在 OS X 上编译 ASL?

在 Mac OS 上编译 FFmpeg

mac os x yosemite下如何编译milton?

为啥在我的 Mac 上编译的 C++ 库不能在服务器上运行?

Mac上编译C++报错