У меня есть OS X 10,6 Mac, которые я использую в качестве своей dev машины. Программа я записал работы отлично над dev машиной. Однако, когда я пытался выполнить его на OS X 10.5 (не уверенный, если это релевантно), тестовая машина, это отказывает на запуске.
Это - ошибка, которую я получаю:
Process: MyApp[25908]
Path: /Applications/MyApp.app/Contents/MacOS/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: launchd [109]
Interval Since Last Report: 17392106 sec
Crashes Since Last Report: 735
Per-App Interval Since Last Report: 0 sec
Per-App Crashes Since Last Report: 8
Date/Time: 2010-08-14 07:50:09.768 -0700
OS Version: Mac OS X 10.5.8 (9L31a)
Report Version: 6
Anonymous UUID: 1BF30470-ACF2-46C7-B6D5-4514380965C8
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread: 0
Dyld Error Message:
Symbol not found: __ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i
Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp
Expected in: /usr/lib/libstdc++.6.dylib
Таким образом, похоже, что это отказывает, потому что это загружает несовместимую версию динамической библиотеки libstdc ++. 6. Действительно ли этот тип вещи является обыкновенным? Поиск на Google действительно не показывает много других программ, которые имеют эту проблему. Что я должен делать в своей компиляции для предотвращения этого? Я должен так или иначе включать libstdc ++ в моем комплекте приложений?
Я могу вспомнить несколько моментов:
Вы скомпилировали его как «сборку релиза»? Отладочная сборка может не работать на машинах, кроме той, на которой она скомпилирована.
Какой SDK вы использовали? Какую минимальную версию ОС вы указали в настройках сборки? Если вы хотите запустить его на 10.5, вам необходимо использовать 10.5 SDK и / или установить для целевой ОС значение 10.5. См. этот документ Apple о сборке для нескольких версий ОС.
Установлено ли на целевой машине DYLD_LIBRARY_PATH
что-то непустое? Если не сделать это аккуратно, это может сбить с толку dyld
.
Один из способов различить различные возможности - запустить приложение на машине разработчика, но с отдельной учетной записью без прав администратора от учетной записи разработчика; затем вы можете проверить, работает ли он в коробке 10.6.