我有一个基本的 C 程序:
#include <stdio.h>
int main() {
printf("Hello, world!\n");
}
当我cc
在 Apple Silicon 设备上直接编译它时,它会生成一个arm64
可执行文件:
% cc hello.c -o hello
% file hello
hello: Mach-O 64-bit executable arm64
% ./hello
Hello, world!
但是,当我通过 CMake 或 Ninja 等构建系统构建它时,它会生成一个 x86_64 二进制文件:
% ./my-build-system
% file hello
hello: Mach-O 64-bit executable x86_64
我已经验证了构建脚本正在运行的命令与我自己运行的命令相同。如果我复制并粘贴命令并自己运行它,生成的可执行文件又是 arm64。