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

How to build an Intel binary on an M1 Mac from the command line with the standard Apple version of clang?

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

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

cc foo.c -o foo

我使用什么开关来构建 Intel 二进制文件而不是 ARM?英特尔有不同的好处吗? 32 位与 64 位?甚至更旧的 CPU 指令集? Google 很难做到这一点,但我是 Apple 生态系统的新手。

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

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

自 Catalina 以来,Intel 32 位无法在 macOS 上执行。自 2006 年以来的每个 Mac,除了带有 Core Solo 处理器的原始英特尔 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