【问题标题】:C++ Compile code on Mac OS X and run it on Linux x86C++ 在 Mac OS X 上编译代码并在 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 的实现细节来尝试它。似乎很容易错过依赖项。我想我会用我的眼睛哭泣......

标签: c++ linux macos cross-compiling


【解决方案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……
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    相关资源
    最近更新 更多