Ras*_*rov 8 ubuntu qt shared-libraries
我试图部署我的应用程序Ubuntu 16.04
.所以我制作了一个包含以下层次结构的包 -
Package
|
----bin
|
-----application
-----application.sh
-----Qt
|
-----necessary qt libraries
-----platforms
Run Code Online (Sandbox Code Playgroud)
这是application.sh
文件 -
#!/bin/sh
export LD_LIBRARY_PATH=`pwd`/Qt
./application
Run Code Online (Sandbox Code Playgroud)
当我执行该application.sh
文件时,它显示我无法找到该libQt5MultimediaWidgets.so.5
文件.但它在Qt
文件夹中.此外,当我在导出后ldd application
从application.sh
文件打印LD_LIBRARY_PATH
它给我以下输出 -
请检查标记的部分.任何人都可以解释为什么
Qt
即使在导出后仍未找到该文件夹中的库LD_LIBARRY_PATH
?
编辑:
所以正如@Zang建议的那样,我检查了调试日志,这里是 -
请检查标记的部分.
看起来它实际上正在尝试实际libQt5MultimediaWidgets.so
,然后报告它无法找到它.有谁能帮我理解这里发生的事情?
编辑-2:根据@Tarun的建议,我已经ls -al
在我的Qt文件夹上运行了.这是输出 -
第一
可能是pwd不在你认为的地方吗?
你可以尝试添加
# Figure out where the application.sh script is located
scriptpath="$( cd "$(dirname "$0")" ; pwd -P )"
# Make sure our pwd is that location
cd "$scriptpath"
Run Code Online (Sandbox Code Playgroud)
在脚本的顶部(假设bash shell,从这里)
通过这样做,Qt文件夹的所有相对路径都是有效的.
第二
也许你应该考虑导出你的新LD_LIBRARY_PATH,就像这样(从这里):
LD_LIBRARY_PATH=whatever
export LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
第三
在更改变量(从此处)后,为ld运行ldconfig命令以进行更新可能很有用:
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)
如果你看看你的输出 ls -al
这些是您拥有的软链接。您的软链接libQt5MultimediaWidgets.so.5
指向libQt5MultimediaWidgets.so.5.9.2
同一目录,而该文件根本不存在。因此,您需要设置正确的软链接路径或将文件放在同一目录中
归档时间: |
|
查看次数: |
1661 次 |
最近记录: |