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中,添加上述的编译选项,就可以解决这个问题。



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

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

在这里插入图片描述

你可能感兴趣的:(打包,gcc编译,rpath,找不到so,指定so搜索路径)