如何在OSX上的.app包中正确分发dylib依赖项?

时间:2017-07-23 18:43:45

标签: c++ dependencies software-distribution

具体来说,我正在尝试安装glew和freetype。我已将.dylibs复制到.app目录中,并使用install_name_tool设置其路径。当我尝试在其他机器上运行它时,我收到以下错误:

Library not loaded: @executable_path/../Resources/libGLEW.2.0.0.dylib
 Referenced from: /Volumes/*/Tetris.app/Contents/MacOS/Tetris
 Reason: no suitable image found.  Did find:
  /Volumes/SharedFolders/build/Tetris.app/Contents/MacOS/../Resources/libGLEW.2.0.0.dylib: stat() failed with errno=22
  /Volumes/SharedFolders/build/Tetris.app/Contents/MacOS/../Resources/libGLEW.2.0.0.dylib: stat() failed with errno=22

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。问题是当我需要在-change开关的可执行文件和带有-id开关的dylib上运行它时,我只对可执行文件运行install_name_tool。

我也通过这样做发现dylibs还有其他依赖的dylibs,这些dylib必须被复制到bundle中并用install_name_tool重新配置。

如果有人知道自动完成所有这一切的工具,请发表评论。