【问题标题】:Create C++ executable for Ubuntu from OS X [closed]从 OS X 为 Ubuntu 创建 C++ 可执行文件 [关闭]
【发布时间】:2012-12-21 10:18:16
【问题描述】:

我有 GCC 4.7.2 和 OS X 64 位。我想为我的朋友使用 Ubuntu 32 位从main.cpp 创建一个可执行的exe 文件。我尝试使用$ g++ main.cpp -o exe,但他说它不起作用,因为我编译为 64 位。

如何编译为 32 位?

【问题讨论】:

  • 这行不通 - 你的朋友需要在他的 Linux 系统上重新编译源代码。
  • 喜欢 GCC?试试crosstool

标签: c++ macos gcc ubuntu 32bit-64bit


【解决方案1】:

你的朋友错了。很可能他有一台 32 位机器,而您创建了 64 位可执行文件,但即使您编译为 32 位(通过编译和链接 -m32 完成)还有很多其他的仍然无法正常工作的原因。 Mac OS X 和 Ubuntu 是完全不同的系统,为一个系统编译的代码不会在另一个系统上运行。

任何单一版本的 GCC 只能为单一目标生成代码,即 CPU 和操作系统的单一组合。您系统上的 GCC 是针对 Mac OS X 构建的,即它是一个本机编译器,这意味着它会为其运行的同一系统生成代码。

要为 Ubuntu 生成可执行文件,您需要一个不同的 GCC 版本,使用类似 --target=i686-unknown-linux-gnu 的东西构建。如果该 GCC 在您的 Mac 上运行,那么它将是一个交叉编译器,这意味着它在一个系统上运行,但为不同类型的系统生成代码。

要安装和使用交叉编译器,您还需要用于交叉目标的所有 C 库,因此您需要获取 glibc 源代码的副本并使用交叉编译器在您的 Mac 上构建它们。这相当复杂,但有些项目如 crosstoolcrosstool-NG 试图通过提供脚本来简化它。

在您的 Mac 上设置虚拟机并在 VM 中安装 Ubuntu,然后使用 Ubuntu 的本机 GCC 为 Ubuntu 编译可执行文件会更简单。

你的朋友自己做apt-get install gcc自己编译源代码会更简单。

【讨论】:

  • 是的,我想我将在我的 Mac 上的虚拟机上编译它。非常感谢
猜你喜欢
  • 2016-12-27
  • 2013-08-17
  • 2013-10-17
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2011-06-27
  • 2016-01-20
  • 1970-01-01
相关资源
最近更新 更多