Qt下的动态库的引用

问题描述:
第一步,开发一个动态库项目,生成如下文件libTestLibrary.so、libTestLibrary.so.1、libTestLibrary.so.1.0、libTestLibrary.so.1.0.0,其中libTestLibrary.so、libTestLibrary.so.1、libTestLibrary.so.1.0为链接文件,libTestLibrary.so.1.0.0为库文件;
第二步,开发一个使用动态库的项目TestMyLibrary,在QtCreater下可以运行,而单独执行可执行程序,不能运行,提示没有找到动态库文件。


问题原因:
程序执行时需要加载动态库文件,而可执行程序根据系统指定的搜索目录没有发现动态库文件;


解决办法:
1、使用ldd命令,查看可执行程序的动态库依赖:
ldd ./TestMyLibrary
看看执行程序都找不到哪些依赖文件;
将ldd列出的找不到的文件和真实的库文件拷贝到目录 /usr/lib下;
在本例子中需要拷贝的文件是libTestLibrary.so.1、libTestLibrary.so.1.0.0;
重新运行可执行文件,正常;
理由:/usr/lib 为系统默认搜索目录;


2、修改系统动态库配置文件(以下命令需要最高权限,权限不足请加sudo)
vi /etc/ld.so.conf
在现有的行后面添加新行,填上自己的动态库文件所在的目录,保存退出;
输入命令 ldconfig 
ldconfig为动态库加载到高速缓存的命令,修改后不更新不起作用;
重新运行可执行文件,正常;
理由:ld.so.conf 里面是想要读入高速缓存当中的动态库函数库所在的目录;


3、在/etc/ld.si.conf.d/目录下建立自己的动态库配置文件;
vi myLib.conf
将动态库文件所在的目录添加上,保存退出;
输入命令 ldconfig 
重新运行可执行文件,正常;
理由:ld.so.conf 的第一行是 include ld.so.conf.d/*.conf 包含了该目录下的所有配置文件;


请大家阅读一下Linux的函数库管理的相关内容,推荐书籍《鸟哥的Linux私房菜》22.5节677页内容;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值