Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用macdeployqt为qt应用程序创建dmg文件_Macos_Qt_Dmg_Otool_Macdeployqt - Fatal编程技术网

Macos 使用macdeployqt为qt应用程序创建dmg文件

Macos 使用macdeployqt为qt应用程序创建dmg文件,macos,qt,dmg,otool,macdeployqt,Macos,Qt,Dmg,Otool,Macdeployqt,我当前使用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 然后我看到了@cristoph

我当前使用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的帖子,上面解释了情况。基本上,我需要将
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个文件添加到应用程序中?我需要走多深?我怎么知道什么时候该停下来。由于这些文件中的每一个都可能有自己的依赖项?

否,您只需要更新不位于默认位置的库的依赖项位置,例如
libosg.141.dylib

标准框架库将存在于每台机器的同一位置,因此应用程序可以在执行期间链接到它们

因此,您不需要更改以下条目:

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

诸如
libosgDB.141.dylib
libosgUtil.141.dylib
libosg.141.dylib
libOpenThreads.20.dylib
等库需要通过进行设置

对用于部署的工具进行了说明

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