Linux编程:6 系统运行程序并不会默认从当前路径加载动态库so文件

一、动态库so文件和可执行文件m在同一个目录下,然后执行可执行文件,问题来了,提示:

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

在Windows中,可执行程序在运行时,加载动态链接库时,会在系统目录、环境变量指定的目录和当前可执行文件所在的目录里寻找动态链接库。然而,Linux并不会在当前可执行文件所在的目录里寻找动态链接库。所以才找不到动态链接库。

不过Linux运行时加载动态库的环境变量名称为LD_LIBRARY_PATH

我们就可以将库文件目录所在的目录(即可执行文件所在的目录)设置到LD_LIBRARY_PATH变量中:

二、设置LD_LIBRARY_PATH
1、打开环境变量
vi /etc/profile
2、在最下面加上你动态链接库路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/codexia/  

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/codexia02/

2、如果重启后电脑环境变量不生效了,可
vi /etc/profile.d/path.sh
3、然后输入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/codexia/  

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/codexia02/

保存后,重启电脑即可

三、查看设置的环境变量
echo $LD_LIBRARY_PATH

(有关设置环境变量的细节可以参考我的博客: linux下安装cmake的方法)

参考:
1、Linux编程:6 系统运行程序并不会默认从当前路径加载动态库so文件http://www.cjjjs.com/article/201711294534982

你可能感兴趣的:(linux)