【问题标题】:Mac OS X how to change where an app looks for librariesMac OS X 如何更改应用程序查找库的位置
【发布时间】:2013-10-31 05:38:23
【问题描述】:

我正在 Mac 上使用 Qt5.1.1 构建应用程序。我正在使用包来创建安装程序。我进行了设置,以便安装程序将 .app 文件和所有库安装到 /Applications/ 中的文件夹中。问题是当我安装应用程序时,它没有在我希望它查找库的位置查找。

一个 otool -L 显示这个:

esu:
    libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
    /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.1)
    /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.1)
    /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.1)
    /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtSerialPort.framework/Versions/5/QtSerialPort (compatibility version 5.1.0, current version 5.1.1)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.1.0)
    /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.1.0, current version 5.1.1)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

如何更改应用程序查找这些库的位置?

【问题讨论】:

    标签: macos qt packages


    【解决方案1】:

    如果您运行macdeployqt,它会自动将其中一些(Qt 使用的)更改为其他的,您可以使用install_name_tool 来完成

    install_name_tool -change oldpath  newpath target
    

    【讨论】:

    • 因此 install_name_tool 命令可能类似于: install_name_tool -change /Users/ken/Qt5.1.1/5.1.1/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets ../。 ./../QtWidgets ?
    • @JaredPrice 我忘记了目标,你的../../../QtWidgets 取决于你输入命令行的位置...
    • @JaredPrice 然后您可以验证答案;)
    【解决方案2】:

    我最终去了我的发行版 esu.app 文件所在的位置,我只使用了 macdeployqt。尝试使用 install_name_tool 手动设置 lib 依赖项太痛苦了。

    这是我使用的命令:

    macdeployqt esu.app -verbose=2 -dmg
    

    【讨论】:

    • 请注意,有时macdeployqt 是不够的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多