linux-尝试运行Qt应用时LD_LIBRARY_PATH失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-尝试运行Qt应用时LD_LIBRARY_PATH失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1359字,纯文字阅读大概需要2分钟。
内容图文
![linux-尝试运行Qt应用时LD_LIBRARY_PATH失败](/upload/InfoBanner/zyjiaocheng/950/d9cb852c09414d6697db9822624d3b0c.jpg)
我想在Linux上运行基于Qt 5的应用程序usind动态库.总之,脚本会将可执行文件和其他相关文件(包括lib文件夹中的所有.so文件)复制到所需的目标位置,并且调用gksudo的脚本将作为应用程序的调用者.
到现在为止,一切正常,直到我调用可执行脚本:该应用程序无法运行.当我要求使用sudo运行时,它告诉我缺少一个库(Qt5SerialPort …).在实际的可执行文件上运行ldd时,我发现该应用程序不是从lib文件夹中获取所需的lib,而是从一些明显的硬编码路径中获取.
我尝试使用qt.conf解决此问题,但未成功.如注释here所示,看来qt.conf实际上不应该以这种方式工作.在咨询了Qt documentation之后,我决定使用LD_LIBRARY_PATH来告诉链接器在哪里可以找到这些库,因为我已经在使用脚本来运行该应用了.因此,最终的摘要脚本代码是
#!/bin/sh
LD_LIBRARY_PATH=lib/
export LD_LIBRARY_PATH
sudo ldconfig #sometimes sudo /sbin/ldconfig -v
gksudo "$INSPATH/myApp" #or sudo instead
问题是它仍然无法正常工作.当我调用echo $LD_LIBRARY_PATH时,可以看到该变量已被正确编辑,但是当我调用运行行(使用sudo)时,它一直告诉我找不到lib.
我想念什么?
解决方法:
sudo没有通过LD_LIBRARY_PATH:
$LD_LIBRARY_PATH=lib/
$export LD_LIBRARY_PATH
$env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=lib/
$sudo env | grep LD_LIBRARY_PATH
您可以将其设置为以超级用户身份运行的命令:
$sudo env LD_LIBRARY_PATH=/lib env | grep LD_LIBRARY_PATH
SUDO_COMMAND=/usr/bin/env LD_LIBRARY_PATH=/lib env
LD_LIBRARY_PATH=/lib
您会想要类似
sudo env LD_LIBRARY_PATH=/lib "$INSPATH/myApp"
和往常一样,请注意sudo!
内容总结
以上是互联网集市为您收集整理的linux-尝试运行Qt应用时LD_LIBRARY_PATH失败全部内容,希望文章能够帮你解决linux-尝试运行Qt应用时LD_LIBRARY_PATH失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。