Создание приложения для старого 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 

person Vivek Goel    schedule 01.04.2011    source источник
comment
Вы компилируете вручную или через IDE?   -  person Macmade    schedule 01.04.2011


Ответы (2)


-arch i386 -Wl,-macosx_version_min,10.5 поможет; Хотя я точно не знаю, хватит ли их.

person geekosaur    schedule 01.04.2011
comment
Если это вызывает предупреждения, ОП должен опубликовать их, чтобы мы могли решить любые проблемы. - person Rafe Kettler; 01.04.2011
comment
@Rafe Я получаю dyld: unknown required load command 0x80000022 Trace/BPT trap - person Vivek Goel; 01.04.2011
comment
Это с опцией -Wl выше или без нее? Без него компоновщик действительно будет использовать команды загрузки, которые 10.5 не понимает; указанная выше опция -Wl должна заставить его использовать команды загрузки, понятные в 10.5. - person geekosaur; 01.04.2011
comment
@geekosaur, когда я попробовал вашу команду, я получаю недопустимое имя арки x86 - person Vivek Goel; 01.04.2011
comment
вздох некоторые вещи хотят x86, некоторые хотят i386, я наполовину ожидаю, что что-то где-то в 10.6 ожидает ia32... Вместо этого попробуйте -arch i386. - person geekosaur; 01.04.2011
comment
с i386 я получил ld: символ dyld_stub_binding_helper не определен (обычно в crt1.o/dylib1.o/bundle1.o) collect2: ld вернул 1 статус выхода - person Vivek Goel; 01.04.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 )

person greymfm76    schedule 23.10.2011