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

hip*_*ail 8 macos command-line intel clang cross-compiling

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

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

cc foo.c -o foo

我应该使用什么开关来构建 Intel 二进制文件而不是 ARM?英特尔有不同的风格吗?32 位还是 64 位?也许甚至是更旧的 CPU 指令集?这对谷歌来说出人意料地困难,但我是苹果生态系统的新手。

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

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

Tre*_*rev 17

自 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