我目前使用macdeployqt创建了一个'dmg‘文件,并遇到了以下错误。
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然后我偶然发现了@cristopher bruns在this上的帖子,它解释了这种情况。基本上,我需要将libosg.141.dylib添加到应用程序中,然后添加libosg.141.dylib依赖的所有库。例如,on.So依赖于以下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个文件都添加到应用程序中?我需要深入到多深?我怎么知道什么时候该停下来。因为这些文件中的每一个都可能有自己的依赖项?
发布于 2016-02-03 19:43:00
不需要,您只需要更新不在默认位置的库的依赖关系的位置,例如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中进行了说明。
https://stackoverflow.com/questions/35169074
复制相似问题