暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

动态库查找路径--LD_LIBRARY_PATH

二进制人生 2020-05-24
3904

微信公众号:二进制人生
专注于嵌入式linux开发。
更新:2020/05/21,转载请注明出处。

在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。ld.so 在标准路径(/lib, /usr/lib) 中寻找应用程序用到的共享库。

但是,如果需要用到的共享库在非标准路径,ld.so 怎么找到它呢?我们可以通过设置环境变量LD_LIBRARY_PATH
来指示动态库的查找路径。

作用

Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径(LD_LIBRARY_PATH指定的路径在默认路径之前查找,查找的先后性很重要)。

当执行函数动态链接.so时,如果此文件不在缺省目录下‘/lib’ and ‘/usr/lib’,那么就需要设置环境变量LD_LIBRARY_PATH指示动态库的查找路径。

设置方法

例如:如果你编译了一个叫libfun.so的库,你放在了/home/hongjh/lib下,你的程序a.out链接了该库,直接运行程序会报错,提示找不到libfun.so库。此时,应该设置LD_LIBRARY_PATH=/home/hongjh/lib

当需要设置多个库路径时,LD_LIBRARY_PATH的设置支持以冒号分隔,例如:

export LD_LIBRARY_PATH=/home/hongjh/lib:/hongjh/lib

假如需要在已有的环境变量上添加新的路径名,即不覆盖之前的设置,则采用如下方式:

export LD_LIBRARY_PATH=/hongjh/lib:$LD_LIBRARY_PATH

(注:GNU系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)

备注:linux下环境变量设置方法
在linux下可以用export命令来设置环境变量,比如在linux终端下输入:

export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH

 

然后再输入export即会显示所有已经设置的环境变量。
也可以通过echo $LD_LIBRARY_PATH查看是否设置正确。

永久性添加

上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的 Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATH 的 export 语句写到系统文件中,例如/etc/profile、/etc/export、~/.bashrc 或者 ~/.profile 等等,取决于你正在使用的操作系统咯。

每天进步一点点……
喜欢点个赞呗

图 二进制人生公众号



文章转载自二进制人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论