【问题标题】:How to cross compile from Mac OS X to Linux x86?如何从 Mac OS X 交叉编译到 Linux x86?
【发布时间】:2010-12-19 00:24:30
【问题描述】:

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

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

非常感谢任何帮助!

【问题讨论】:

  • 你最终采用了什么解决方案?

标签: gcc macos centos cross-compiling gnu-toolchain


【解决方案1】:

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

如果你真的坚持交叉编译,你必须构建一个交叉编译器。说明是 herehere,但请注意:您可能需要几天时间才能正确完成,然后您仍然需要 VM 来测试结果,所以我不需要看不出这样做有什么意义。

【讨论】:

  • 感谢您的回复。是的,你的建议听起来不错:DСпасибо!
  • 还有crosstool-ng,但是我在 OS X 上的体验有点痛苦,因为它需要在区分大小写的磁盘映像中构建(如果在一个案例上完成,它会很适合- 将 FS 保留为 HFS+ 默认值),并且必须安装许多 GNU 或某些系统实用程序的更新版本才能尝试在 OS X 上构建。
【解决方案2】:

使用 Cocotron 直接从 Xcode 进行交叉编译。这里有一个很好的入门指南:http://blog.tlensing.org/tag/cocotron/

【讨论】:

    【解决方案3】:

    你可以使用crosstool-ng,或者如果你不想花太多时间去配置它,你可以下载一个预先配置好的交叉编译器,比如Linaro。 这是在 Mac OS X 中安装它的guide

    【讨论】:

    • Linaro 工具链适用于 ARM。 OP 正在寻找 x86。
    【解决方案4】:

    我很难让 crosstool-ng 在 OSX 10.9 for x86_64 Linux 上构建。我使用了 Jeff Preshing 在how to build a gcc cross-compiler 上的非常有用的帖子和他的脚本here 作为对我有用的脚本的基础。在我的 OSX 版本上编译 glibc 时,他在链接中的脚本不起作用(对于那些从 OSX 交叉编译到 Linux 的人来说,这似乎是一个非常常见的抱怨)。

    我的脚本在这里:https://github.com/johnlondon/Cross-compile-toolchain-for-linux-on-OSX

    【讨论】:

      【解决方案5】:

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

      安装 docker 并准备构建镜像。

      • 安装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 交互来测试它,我猜 VM 仍然是更好的选择(请参阅@employees-russian 的解决方案)。

      【讨论】:

        猜你喜欢
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 2017-06-05
        • 2011-03-17
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多