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 (то есть один из потенциально многих), можно просто обойти то, что я испортил при настройке проекта (приложения)....

0 ответов

Другие вопросы по тегам