Я пытаюсь перенести мой проект на Mac OS-X.
Поскольку я разрабатывал свой проект с использованием C ++ 0X, мне потребовалась более свежая версия GCC, чем та, которая поставляется с Xcode (даже Xcode4), поэтому я скомпилировал GCC 4.6 на своем компьютере Snow Leopards Mac.
Мой проект компилируется нормально, и он запускается слишком на компьютере, который я скомпилировал (OS-X 10.6.7), но когда я его переношуна мой MacBook (OS-X 10.5.8) он не работает.
Возвращает следующие ошибки:
dyld: сбой привязки ленивых символов: символ не найден: __ZNSo9_M_insertImEERSoT_Ссылка:/zu/Desktop/OgreApp.app/Contents/MacOS/OgreApp Ожидается в: /usr/lib/libstdc++.6.dylib
Я понимаю, что программе требуется libstdc ++. 6.dylibGCC 4.6.0, поскольку этот файл содержит функции C ++ 0x (несмотря на то, что мойв текущем тесте не используется никакая функция C ++ 0x) вместо стандартной libstdc ++. 6.dylib, обычно включаемой в систему OS-X.
Итак, я попробовал следующее:
для указания -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min = 10,5 для обеспечения обратной совместимости с OS-X 10.5.Но ошибка остается прежней.
для проверки пути libstdc ++. 6.dylib с помощью otool -L и изменения пути к общей библиотеке с помощью install_name_tool -изменить /opt/local/lib/gcc46/libstdc++.6.dylib @executable_path /../ Libraries / libstdc ++. 6.dylib OgreApp (с копией gcc 4.6.0 libstdc ++. 6.dylib в библиотекахпапка) как предложено как ответ на мой предыдущий вопрос .Но ошибка остается той же.
для статической связи libstdc ++ и libgcc с использованием -static-libgcc - static-libstdc ++ .Но он по-прежнему возвращает ту же ошибку.
Поскольку моя программа использует инфраструктуру Ogre, я применил вышеупомянутые манипуляции к исполняемому файлу Ogre, встроенному в Ogre.framework, но это не такизменить что-либо.
Кто-нибудь может объяснить мне, как я должен развернуть приложение, созданное с помощью нестандартного libstdc ++, на другом компьютере Mac, на котором установлена более старая версия (я думаю, что проблема с тем же компьютером работаетSnow Leopard в качестве программы использует GCC 4.6.0 libstdc ++)?