一、问题描述

运行程序时出现以下错误,原因是程序运行时需要的动态库找不到:

./app: error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory

解决方案有以下三种。

二、解决方案

2.1 方案1

把需要的库文件复制到系统的默认库路径下:

> sudo cp libxxx.so /lib

系统默认的库文件有/lib, /usr/lib, /usr/local/lib,64位系统中的*/lib64的也会有。

2.2 方案2

把这个库的路径添加到/etc/ld.so.conf文件中:

> sudo sh -c "pwd >> /etc/ld.so.conf"
> sudo ldconfig

2.3 方案3

在环境变量中添加库文件地址:

export LD_LIBRARY_PATH=$(pwd)

三、测试

当前目录下有一个库文件libfunc1.so和一个依赖此文件的二进制程序app

# 方案一
> ./app 
./app: error while loading shared libraries: libfunc1.so: cannot open shared object file: No such file or directory
> sudo cp libfunc1.so /lib
> ./app 
3
15
> sudo rm /lib/libfunc1.so 

# 方案二
> ./app 
./app: error while loading shared libraries: libfunc1.so: cannot open shared object file: No such file or directory
> sudo sh -c "pwd >> /etc/ld.so.conf"
> sudo ldconfig
> ./app 
3
15
> cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
/code/code/Makefile
> sudo sed -i ''2d'' /etc/ld.so.conf
> sudo ldconfig

# 方案三
> ./app 
./app: error while loading shared libraries: libfunc1.so: cannot open shared object file: No such file or directory
> export LD_LIBRARY_PATH=$(pwd)
> ./app 
3
15

最后修改:2018 年 05 月 18 日
如果觉得我的文章对你有用,请随意赞赏