微信公众号:二进制人生
专注于嵌入式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 等等,取决于你正在使用的操作系统咯。
每天进步一点点……
喜欢点个赞呗图 二进制人生公众号





