Linux link 错误error while loading shared libraries

目录

 

一 背景

二.问题分析

1.定位问题

2. Linux下的常识

三 解决问题

1.首先介绍一个变量$LD_LIBRARY_PATH

2.如何解决

3.解决一下


一 背景

自己写了一个库,然后写了一个demo去调用,调用的时候提示

./test: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory

 

二.问题分析

1.定位问题

首先用ldd ./test 来查看当前的demo 依赖哪些lib,发现libiViewerSDK2 没找到

由于windows上开发久了,潜意识里认为把lib放到test 相同的目录下即可执行,如下所示

但是发现还是不行。

2. Linux下的常识

Linux下的lib(so)文件搜索路径通常在 /usr/lib 和 /lib下

所以我们自己写的代码,.so是生成在当前目录下的,并没有在上面这两个目录下,所以哪怕跟可执行文件放在一个文件夹中,也是不能执行的

三 解决问题

1.首先介绍一个变量$LD_LIBRARY_PATH

echo $LD_LIBRARY_PATH 可以查看其内容

可以发现,该变量定义了要去哪个目录下查找lib(.so)文件,所以我们需要修改这个路径

 

2.如何解决

(1)设置LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH

sudo ldconfig

这样子设置过之后,关闭终端上面的设定就会失效

(2)用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边

ln -s /where/you/install/lib/*.so /usr/lib

(3)修改/etc/ld.so.conf,然后刷新

# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

3.解决一下

采用第一种方法解决一下

如下图所示

 

参考:https://www.cnblogs.com/youxin/p/5116243.html

           https://www.cnblogs.com/ysk123/p/9968421.html

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值