可执行程序链接不到动态库的几种解决方法(error while loading shared libraries: lib.so)

当可执行程序无法找到动态库时,可以检查编译时的动态库路径、LD_LIBRARY_PATH环境变量、/etc/ld.so.conf配置以及默认库路径。解决方案包括拷贝动态库至相应路径、设置环境变量、修改配置文件或使用ldconfig命令。
摘要由CSDN通过智能技术生成

目录

可执行程序如何动态库链接?

解决链接不到动态库(error while loading shared libraries: lib.so)


可执行程序如何动态库链接?

    我们的源码编译为可执行文件时,链接器链接动态库需要到我们指定的动态库路径下查找动态库。编译完成后对于可执行文件是如何链接动态库的,其实际的先后搜索顺序如下所示:

  • 编译源代码指定的动态库路径;
  • 环境变量LD_LIBRARY_PATH指定的动态库路径;
  • /etc/ld.so.conf指定的动态库路径;
  • 默认的动态库路径/lib和/usr/lib;

解决链接不到动态库(error while loading shared libraries: lib.so)

  首先这里介绍如何查看当前可执行程序链接到的动态库

# linux
ldd ./your_exe
# mac
otool -L ./your exe

  基于动态库的搜索原则也对应存在不同的方式解决,首先查找动态库实际路径:

sudo find / -type f -name "*your_target.so*"

  1、将动态库拷贝至编译源代码指定的动态库路径;

  2、指定环境变量

export LD_LIBRARY_PATH=/your/lib/dir/:$LD_LIBRARY_PATH

  3、将动态库链接追加至配置文件最后

# 将动态库实际路径追加至文件最后保存退出
sudo vim /etc/ld.so.conf
# 运行ldconfig
ldconfig

  4、将动态库拷贝至默认的动态库路径/lib和/usr/lib;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Felier.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值