2016-02-03 1 views
0

J'ai actuellement créé un fichier 'dmg' en utilisant macdeployqt et j'ai rencontré l'erreur suivante.Créer un fichier dmg pour l'application qt en utilisant 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 

Je suis tombé alors this après par @cristopher qui explique la Bruns situation. Essentiellement j'avais besoin d'ajouter libosg.141.dylib à l'application, puis ajouter toutes les bibliothèques dont libosg.141.dylib dépendait.Par exemple libosg.141.dylib dépend des 13 fichiers suivants.

> 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) 

Ma question est de savoir si je dois ajouter tous ces 13 fichiers à l'application? À quelle profondeur dois-je aller? Comment pourrais-je savoir quand arrêter? Depuis chacun de ces fichiers peuvent avoir leurs propres dépendances?

Répondre

0

Non, il vous suffit de mettre à jour les emplacements des dépendances pour les bibliothèques qui ne résident pas dans des endroits par défaut, tels que libosg.141.dylib

bibliothèques cadres standard existeront sur chaque machine dans le même emplacement que l'application peut créer un lien vers eux pendant l'exécution.

Par conséquent, vous n'avez pas besoin de changer des entrées telles que:

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

et

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

bibliothèques telles que libosgDB.141.dylib, libosgUtil.141.dylib, libosg.141.dylib et libOpenThreads.20.dylib besoin par la mise en install_name_tool.

Les outils utilisés pour le déploiement sont expliqués here.