Linux link 错误error while loading shared libraries

本文详细介绍了在Linux环境下,解决自定义.so库加载失败的方法。通过分析问题原因,了解Linux下的.lib搜索路径,提供了修改LD_LIBRARY_PATH环境变量、使用符号链接或编辑ld.so.conf文件三种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一 背景

二.问题分析

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值