Как скомпилировать программу для распространения на Mac - PullRequest
0 голосов
/ 29 сентября 2010

Я занимаюсь разработкой программы для OSX 10.6.4 (Snow Leopard), и я хочу иметь возможность запускать скомпилированный продукт на других компьютерах Intel 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

Iне знаю, где найти эту библиотеку.Теперь некоторые люди упоминают, что я не должен статически компилироваться на macs, поскольку общие библиотеки system должны быть доступны везде (сторонние библиотеки могут быть связаны вручную).Однако, когда я пытаюсь запустить эту программу Hello World на другом Mac, я получаю следующую ошибку:

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

Итак, как вы компилируете программу на Mac, чтобы она могла распространяться?У меня нет проблем с архитектурой, так как большинство компьютеров, которые меня интересуют, это Intel Mac.

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Не используйте -static.Ваш исполняемый файл будет нормально работать на других 10.6.x x86 Mac.Если вы хотите развернуть на Mac до 10.6, вам нужно будет использовать соответствующий SDK, но кроме этого он должен «просто работать», независимо от того, установлены ли инструменты разработчика.

1 голос
/ 30 сентября 2010

Возможно, стоит использовать XCode для создания вашего исполняемого файла, используя шаблон программы командной строки (базовые исполняемые файлы Unix), просто потому, что он будет управлять многими параметрами компилятора для вас (включая то, с каким SDK вы компилируете / с какими версиями) вы нацеливаетесь).

Я предполагаю, что компиляция строки командной строки по умолчанию будет компилироваться с текущими системными библиотеками (10.6.4).

...