dyld: библиотека не загружена: libboost_system.dylib
Еще один dyld: Library not loaded
Дилиб проблема..
У меня есть dylib (libboost_system.dylib), скомпилированный из источников Boost,
затем использовал install-name-tool
чтобы подготовить его к включению в папку Frameworks моего пакета приложений следующим образом:
install_name_tool -id @executable_path
/../Frameworks/
libboost_system.dylib libboost_system.dylib
Проверено с otool
:
$> otool -L libboost_system.dylib
/Users/TesterCodeSandbox/OgreSDK
/BOOST_DYLIBS/libboost_system.dylib:
@executable_path/../Frameworks
/libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
Теперь добавлено в проект Xcode, связано с приложением и скопировано в папку Frameworks.
Но при проверке встроенного приложения с otool -L
он по-прежнему ссылается на оригинальный (т.е. не перемещенный) dylib:
OgreTest-ekeeqmnyciddaxbzyrehtcoijcki/Build
/Products/Debug/OgreTest.app/Contents/MacOS/OgreTest:
@executable_path/../Plugins
/RenderSystem_GL.dylib (compatibility version 0.0.0, current version 1.8.0)
/System/Library/Frameworks/Cocoa.framework/
Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
@executable_path/../Frameworks/Ogre.framework/
Versions/1.8.0/Ogre (compatibility version 0.0.0, current version 1.8.0)
@executable_path/../Frameworks/Cg.framework
/Cg (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A
/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A
/Carbon (compatibility version 2.0.0, current version 152.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib
(compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib
(compatibility version 1.0.0, current version 125.2.11)
/usr/lib/libobjc.A.dylib
(compatibility version 1.0.0, current version 227.0.0)
/System/Library/Frameworks/CoreFoundation.framework
/Versions/A/CoreFoundation
(compatibility version 150.0.0, current version 550.43.0)
/System/Library/Frameworks/AppKit.framework
/Versions/C/AppKit
(compatibility version 45.0.0, current version 1038.36.0)
И приложение не запускается с ошибкой " dyld: Library not loaded: libboost_system.dylib ". Есть идеи?
Примечание 1
Теперь это работает, если я также постобработаю двоичный файл моего приложения с install_name_tool
т.е.
install_name_tool -change libboost_system.dylib @executable_path/../Frameworks/libboost_system.dylib TestApp
Я пропускаю какую-то опцию Xcode, чтобы заставить компилятор автоматически изменять местоположение dylib в моем приложении как часть сборки?
Конечно, ссылаясь install_name_tool
вручную для приложения, использующего dylib (то есть один из потенциально многих), можно просто обойти то, что я испортил при настройке проекта (приложения)....