首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行macdeployqt时出现错误:"/usr/lib/<libs>“没有文件

执行macdeployqt时出现错误:"/usr/lib/<libs>“没有文件
EN

Stack Overflow用户
提问于 2016-08-09 22:12:55
回答 1查看 779关注 0票数 3

我有一个需要用macdeployqt设置的应用程序,但当我调用它时,它告诉我在/usr/lib/目录中找不到一些库。

在调用macdeployqt之前,我必须在我的.app中插入3个库(.tx)。我使用otool命令查看依赖关系,下面是其中之一的输出:

代码语言:javascript
复制
RecomputeDimBlock.tx:
    RecomputeDimBlock.tx (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1404.0.0)
    libTD_Db.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_DbRoot.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_Ge.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_Root.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_Alloc.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_Gi.dylib (compatibility version 0.0.0, current version 0.0.0)
    libTD_SpatialIndex.dylib (compatibility version 0.0.0, current version 0.0.0)
    libsisl.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)

我还会在我的tx中插入每个"libTD_xx“。然后,我重新链接这些lib。我已经创建了一个bash脚本来自动执行这些步骤:

代码语言:javascript
复制
#!/bin/bash

if [ ! -e build/debug/MediaCad.app ]
then
    echo MediaCad.app non trouvé dans build/debug/
    echo Sortie du script
    exit 1
fi
#Création du dossier « tx » dans le .app s’il n’existe pas
if [ ! -d build/debug/MediaCad.app/Contents/tx ]
then
    mkdir -p build/debug/MediaCad.app/Contents/tx
fi


#placement des tx et des libs dans le .app
for tx in RecomputeDimBlock.tx PlotSettingsValidator.tx ThreadPool.tx libTD_Db.dylib libTD_DbRoot.dylib libTD_Gi.dylib libTD_SpatialIndex.dylib libTD_Ge.dylib libTD_Root.dylib libsisl.dylib libTD_Alloc.dylib
do
    if [ -e tx/$tx ]
    then
        echo Copie de $tx dans l’application
        cp tx/$tx build/debug/MediaCad.app/Contents/tx
    else
        echo Impossible de trouver le fichier $tx dans tx/
        echo Sortie du script
        exit 1
    fi
done


#installation des libs
cd tx/
for lib in libTD_Db.dylib libTD_DbRoot.dylib libTD_Gi.dylib libTD_SpatialIndex.dylib libTD_Ge.dylib libTD_Root.dylib libsisl.dylib libTD_Alloc.dylib
do
    echo Installation de $lib
    install_name_tool -id $lib ../build/debug/MediaCad.app/Contents/tx/$lib
    install_name_tool -change $lib @executable_path/../tx/$lib ../build/debug/MediaCad.app/Contents/MacOS/MediaCad
done


#Actualisation des dépendances
for tx in RecomputeDimBlock.tx PlotSettingsValidator.tx ThreadPool.tx
do
    for lib in libTD_Db.dylib libTD_DbRoot.dylib libTD_Gi.dylib libTD_SpatialIndex.dylib libTD_Ge.dylib libTD_Root.dylib libsisl.dylib libTD_Alloc.dylib
    do
        echo Actualisation de $lib pour $tx
        install_name_tool -change $lib @executable_path/../tx/$lib ../build/debug/MediaCad.app/Contents/tx/$tx
    done
done
cd ..

#génération du .app
echo Début de la construction de l’application
/Users/developpement/Qt/5.7/clang_64/bin/macdeployqt build/debug/MediaCad.app
echo Application construite

当我执行我的脚本时,除了macdeployqt之外,所有东西都工作得很好。下面是输出:

代码语言:javascript
复制
ERROR: no file at "/usr/lib/libTD_Alloc.dylib"
ERROR: no file at "/usr/lib/libTD_DbRoot.dylib"
ERROR: no file at "/usr/lib/libTD_Gi.dylib"
ERROR: no file at "/usr/lib/libTD_Ge.dylib"
ERROR: no file at "/usr/lib/libTD_Root.dylib"
ERROR: no file at "/usr/lib/libTD_SpatialIndex.dylib"
ERROR: no file at "/usr/lib/libsisl.dylib"

这些库就是我在开始时复制到.app中的库。

我假设我在install_name_tool上做错了什么,但是我看不到哪里?我花了3天的时间,所以这就是为什么我在这里问我的问题。最后一件事,我使用的是OSX10.11和Qt5.7。

如果有什么不清楚的地方,请不要犹豫地告诉我,我知道我的英语不太好:)

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-21 06:36:52

尝试使用macdeployqt的-libpath选项。它应该指向您获得dylib文件的文件夹。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38853201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档