我正在开发一个关于OSX 10.6.4(Snow Leopard)的程序,我希望能够在其他Intel Mac上运行已编译的产品,其中一些可能没有XCode isntalled。
为简化起见,我首先写了一个Hello World程序。
#include<stdio.h>
int main() {
printf("Hello world!\n");
return 0;
}
如果我将其编译为
gcc -static prog.c
我得到了以下错误:
ld: library not found for -lcrt0.o
我不知道在哪里可以找到这个库。现在,有些人提到我不应该在mac上静态编译,因为 system 共享库应该随处可用(第三方库可以手动链接)。但是,当我尝试在另一个mac上运行这个Hello World程序时,我得到了以下错误:
dyld: unknown required load command 0x80000022
Trace/BPT trap
那么,如何在mac上编译程序以便它可以分发?我没有架构问题,因为我感兴趣的大多数计算机都是Intel Macs。
答案 0 :(得分:2)
请勿使用-static
。您的可执行文件将在其他10.6.x x86 Mac上正常运行。如果你想在10.6之前的Mac上进行部署,那么你将需要使用适当的SDK,但除此之外它应该“正常工作”,无论是否安装了开发人员工具。
答案 1 :(得分:1)
使用命令行程序模板(基本Unix可执行文件)创建可执行文件可能是值得的,因为它将为您管理许多编译器选项(包括您正在编译的SDK /哪些版本)你的目标是。)
我的猜测是默认的命令行编译将针对当前系统库进行编译(10.6.4)。