如何从Mac OS X交叉编译到Linux x86?

Vie*_*iet 14 macos gcc centos cross-compiling gnu-toolchain

我正在运行Mac OS X 10.5.8并希望使用GCC 4.1.2编译目标CentOS 5.3.我怎么能:

  1. 编译GCC 4.1.2工具链和相关工具?
  2. 使用该工具交叉编译目标CentOS 5.3?

任何帮助是极大的赞赏!

Emp*_*ian 10

最简单的解决方案是在VM中运行CentOS 5.3(例如Sun VirtualBox).这需要最少的设置,具有相当合理的开销(假设是Intel Mac),并且您将能够实际测试调试您正在构建的内容.

如果你真的坚持交叉编译,你必须构建一个交叉编译器.说明在这里这里,但要注意:它可能需要几天才能正确完成,然后你仍然需要一个VM来测试结果,所以我没有看到这样做的任何意义.


ada*_*bru 6

现在你可能可以使用Docker for Mac来做到这一点,我没有测试它,因为我没有 mac。Docker 基本上创建了一个 Linux VM 并提供了一些不错的功能。

安装 docker 并准备构建映像。

  • 安装泊坞窗
  • 启动一个新容器docker run -ti centos5.3 /bin/bash(在官方Docker Hub 中搜索您想要的目标)
  • 安装你想要的 gcc 版本(类似sudo yum group install "Development Tools"
  • 退出你的容器
  • 运行docker ps -a以获取您的容器ID
  • 将容器备份为基础构建映像docker commit [id] centos:build

进行构建

现在您可以使用您创建的构建环境进行 CentOS 构建。

  • 要启动构建环境,同时在其中安装工作目录,您可以使用类似的东西docker run -it --mount type=bind,source=$(pwd),target=/mnt centos:build /bin/sh -c "cd /mnt && bash"
  • 然后运行gcc ...​​或./configuremakeninja或任何其他内容来进行构建
  • 如果您编写了一些代码,您还可以在这里运行自动化测试

Docker 与虚拟机

通过 docker,您可以使用您喜爱的终端以及您熟悉的主题和键盘映射。此外,它很可能会在启动和运行时消耗更少的资源。

如果您的应用程序是图形化的,并且您通过与其 GUI 交互来测试它,我想虚拟机仍然是更好的选择(请参阅@used-Russian 的解决方案)。