Создание приложения для старого Mac с новой машины Mac?
Я пишу пример приложения на 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 ответа
-arch i386 -Wl,-macosx_version_min,10.5
поможет; Я не знаю наверняка, будут ли они достаточными, все же.
Приложение было неправильно построено на машине 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)