如何使用标准 Apple 版本的 clang 从命令行在 M1 Mac 上构建 Intel 二进制文件?

时间:2021-06-12 02:48:51

标签: macos command-line clang cross-compiling intel

我正在 M1 MacBook Air 上玩一些 C 代码,并查看使用各种优化级别生成的程序集。

我正在使用最基本的命令从命令行构建单个 C 文件:

<块引用>

cc foo.c -o foo

我使用什么开关来构建 Intel 二进制文件而不是 ARM?英特尔有不同的喜好吗? 32 位还是 64 位?也许更旧的CPU指令集?这对 Google 来说非常困难,但我是 Apple 生态系统的新手。

胖二进制文件呢?如何从命令行构建包含 Intel 和 ARM 代码的单个二进制文件?

(就这个问题而言,我只对我可以在命令行上执行的操作感兴趣。如果我需要设置 XCode 项目或环境变量,那么我会接受一个只是说“你可以”的答案不要只用命令行来做”。)

1 个答案:

答案 0 :(得分:4)

自 Catalina 以来,Intel 32 位无法在 macOS 上执行。自 2006 年以来的每台 Mac,除了配备 Core Solo 处理器的原始 Intel Mac mini 外,均支持 64 位。

英特尔: clang -o myTool-x86_64 -mmacosx-version-min=10.15 -arch x86_64 main.c

ARM64: clang -o myTool-arm64 -mmacosx-version-min=10.15 -arch arm64 main.c

FAT 二进制文件: lipo myTool-x86_64 myTool-arm64 -create -output myTool