2016-02-03 8 views
0

В настоящее время я создал файл 'dmg', используя macdeployqt, и обнаружил следующую ошибку.Создайте файл dmg для приложения qt с помощью macdeployqt

Dyld Error Message: 
     Library not loaded: @executable_path/../Frameworks/libosg.141.dylib 
     Referenced from: /Users/USER/*/myApp2.app/Contents/MacOS/MyApp2 
     Reason: image not found 

Затем я наткнулся this сообщению @cristopher Брунс, который объяснил ситуацию. По существу мне нужно было добавить libosg.141.dylib в приложение, а затем добавить все библиотеки, на которые зависел libosg.141.dylib. Так например, libosg.141.dylib зависит от следующих 13 файлов.

> otool -L /usr/local/lib/libosgDB.dylib 
/usr/local/lib/libosgDB.dylib: 
    libosgDB.141.dylib (compatibility version 141.0.0, current version 3.5.1) 
    libosgUtil.141.dylib (compatibility version 141.0.0, current version 3.5.1) 
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0) 
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) 
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) 
    libosg.141.dylib (compatibility version 141.0.0, current version 3.5.1) 
    libOpenThreads.20.dylib (compatibility version 20.0.0, current version 3.3.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0) 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1256.14.0) 
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1256.1.0) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 

Мой вопрос: мне нужно добавить все эти 13 файлов в приложение? Насколько глубоко мне нужно идти? Как я мог знать, когда остановиться. Поскольку каждый из этих файлов может иметь свои собственные зависимости?

ответ

0

Нет, вам нужно только обновить местоположение зависимостей для библиотек, которые не проживают в местах, по умолчанию, такие как libosg.141.dylib

будут существовать на каждой машине, в том же месте, так что приложение можно связать с

Стандартные рамки библиотеки их во время исполнения.

Таким образом, вам не нужно изменять записи, такие как:

/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0) 

и

/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) 

библиотеки, такие как libosgDB.141.dylib, libosgUtil.141.dylib, libosg.141.dylib и libOpenThreads.20.dylib настройки через install_name_tool нужно.

Приведены инструменты, используемые для развертывания here.