Linux下Qt程序运行时找不到so的解决办法

一、全局性设置

  • 将so放入相应的系统lib目录;
  • 修改环境变量,在环境变量中添加so所在路径;
  • 修改一些文件,在其中指定so所在路径。

大概有上面的这3种方式,就不详细说了,相信大家都清楚。

二、指定编译选项

上面介绍的方式,无一例外,都需要修改环境,在我们发布的程序,我们希望不要对环境进行修改。

我们无非就是要求能找到so,仅此而已。

推荐使用指定gcc编译选项来实现。

假设,我们使用Qt开发的程序,希望在程序所在目录下lib/中去寻找so,那么可以在程序工程的.pro文件中,添加如下编译选项:

QMAKE_LFLAGS += -Wl,-rpath=./lib

// 指定多个路径时,使用:分隔,如下
QMAKE_LFLAGS += -Wl,-rpath=./lib:./

则该程序启动时,会在./lib/去找so。当然也可以改成./当前目录下,这就和win下时很像了。

另外,如果程序显示加载1.so,1.so隐式加载调用2.so,出现找不到2.so的问题。那么,可以在1.so代码所属工程.pro中,添加上述的编译选项,就可以解决这个问题。



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Linux 下使用 Qt 开发时可能会遇到各种错误,以下是一些常见的错误及其解决方法: 1. 错误信息:cannot connect to X server 这个错误通常是由于 SSH 连接远程服务器时没有启用 X11 转发导致的。可以使用以下命令启用 X11 转发: ``` ssh -X user@hostname ``` 2. 错误信息:error: ‘nullptr’ was not declared in this scope 这是因为 C++11 的 nullptr 关键字在较旧的编译器中不被支持。可以使用以下方法解决: 在项目的 .pro 文件中添加以下行: ``` QMAKE_CXXFLAGS += -std=c++11 ``` 3. 错误信息:undefined reference to `vtable for ClassName` 这个错误通常是由于类定义中声明了虚函数,但是没有在实现中提供对应的实现导致的。可以在类定义中声明虚函数后,在实现中提供对应的实现即可。 4. 错误信息:error: no matching function for call to ‘functionName’ 这个错误通常是由于函数调用时传递的参数类型与函数声明的参数类型不匹配导致的。可以检查函数声明和函数调用的参数类型是否一致。 5. 错误信息:libQt5Core.so.5: cannot open shared object file: No such file or directory 这个错误通常是由于 Qt路径没有正确设置导致的。可以使用以下命令设置 Qt路径: ``` export LD_LIBRARY_PATH=/path/to/qt/lib:$LD_LIBRARY_PATH ``` 以上是一些常见的 QtLinux运行时可能遇到的错误及其解决方法,希望能帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值