Создание приложения для старого Mac с новой машины Mac? - PullRequest
1 голос
/ 01 апреля 2011

Я пишу пример приложения на MAC OSX 10.6 с gcc версии 4.2. Я компилирую приложение, используя gcc версии 4.2. Он работает нормально на той же машине, но на MAC OSX 10.5 (gcc 4.0) он не работает. как я могу скомпилировать его на 10.6, чтобы он также работал на старой машине?

Я получаю эти ошибки

dyld: unknown required load command 0x80000022
Trace/BPT trap
Команда

, которую я использовал для создания,

gcc -m32 main.cc 

Ответы [ 2 ]

2 голосов
/ 23 октября 2011

Приложение было неправильно построено на машине OS X 10.6 для машины 10.5. Разработчик может исправить это, приняв во внимание три вещи:

Using the correct compiler parameters:
gcc-4.2 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk ...

Using the correct linker settings (setting environment variable before link command). This is required, so that the OS X 10.6 linker will not use the loader command 'LC_DYLD_INFO_ONLY' (=0x80000022), because OS X 10.5 does not understand this command:

export MACOSX_DEPLOYMENT_TARGET=10.5
(or   setenv MACOSX_DEPLOYMENT_TARGET=10.5)

После того, как это исправлено, можно проверить, правильно ли было создано приложение для OS X 10.5, запустив 'otool':

otool -l бинарный

Правильный двоичный файл не должен содержать никаких команд загрузки 'LC_DYLD_INFO_ONLY' (только команды 'LC_DYLD_INFO').

(см. Также статью в моем блоге http://grauonline.de/wordpress/?p=71)

1 голос
/ 01 апреля 2011

-arch i386 -Wl,-macosx_version_min,10.5 поможет;Я не знаю наверняка, будут ли они достаточными, хотя.

...