【问题标题】:How do I properly distribute dylib dependencies in a .app bundle on OSX?如何在 OSX 上的 .app 包中正确分发 dylib 依赖项?
【发布时间】:2017-12-29 08:05:47
【问题描述】:

具体来说,我正在尝试安装 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

【问题讨论】:

  • 您是否考虑将动态库与可执行文件放在同一文件夹中?
  • 我尝试将它们放在同一个目录中,但我得到了同样的错误。它似乎能够找到 dylib,但它们有问题。
  • 是否有使用 dylibs 分发可执行文件的通用教程?

标签: c++ dependencies software-distribution


【解决方案1】:

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

通过这样做我还发现 dylib 具有它们所依赖的其他 dylib,而这些 dylib 必须依次复制到包中并使用 install_name_tool 重新配置。

如果有人知道可以自动执行所有这些操作的工具,请发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多