0

我正在 OSX 10.6.4 (Snow Leopard) 上开发一个程序,我希望能够在其他英特尔 Mac 上运行编译后的产品,其中一些可能没有安装 XCode。

为了简单起见,我首先编写了一个 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 上静态编译,因为系统共享库应该随处可用(第三方库可以手动链接)。但是,当我尝试在另一台 Mac 上运行这个 Hello World 程序时,我收到以下错误:

 dyld: unknown required load command 0x80000022
 Trace/BPT trap

那么,如何在 mac 上编译一个程序以便可以分发呢?我没有架构问题,因为我感兴趣的大多数计算机都是英特尔 Mac。

4

2 回答 2

2

不要使用-static. 您的可执行文件将在其他 10.6.x x86 Mac 上正常运行。如果您想在 10.6 之前的 Mac 上进行部署,那么您需要使用适当的 SDK,但除此之外,它应该“正常工作”,无论是否安装了开发人员工具。

于 2010-09-28T20:52:09.013 回答
1

使用 XCode 使用命令行程序模板(基本的 Unix 可执行文件)创建可执行文件可能是值得的,因为它会为您管理很多编译器选项(包括您正在编译的 SDK/您的目标版本)。

我的猜测是默认命令行编译将针对当前系统库(10.6.4)进行编译。

于 2010-09-30T11:30:21.210 回答