【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解

Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解

参考链接: https://www.jianshu.com/p/a62e1d327023
LD_LIBRARY_PATH中LD是指的LOAD
LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。
可以使用 ls /usr/lib |grep lib 查看自己是否有需要的库文件,当然还需查看其它库文件目录:echo $LD_LIBRARY_PATH 里面一般可以看到七八个已经定义好的库文件搜索路径。

当执行函数动态链接.so时,如果此文件不在缺省目录下 /lib和/usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH
假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式: LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH (newdirs是新的路径串), 实例如下;
export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH

注意上面的写法:在路径最后一定要加上:$LD_LIBRARY_PATH,这样就是在原有的一些环境变量的基础上添加环境变量,而不是重新赋值环境变量。

每次使用某软件都需要临时修改库文件,因为上面的export方法是临时设置环境变量LD_LIBRARY_PATH,重启或打开新的 Shell 之后,一切设置将不复存在。

可以将该 LD_LIBRARY_PATHexport 语句写到系统文件中,例如 ~/.bashrc/etc/profile/etc/export 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统。


ldd命令可以查看一个动态链接库依赖的共享库,如
ldd /usr/lib/libmpi.so.12命令,会打印出该动态库依赖的所有共享库:

linux-vdso.so.1 =>  (0x00007fff9bb5c000)
libibverbs.so.1 => /usr/lib/libibverbs.so.1 (0x00007fb509fb3000)
libopen-rte.so.12 => /usr/lib/libopen-rte.so.12 (0x00007fb509d39000)
libopen-pal.so.13 => /usr/lib/libopen-pal.so.13 (0x00007fb509a9c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb50987f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb5094b5000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb5092b1000)
libhwloc.so.5 => /usr/lib/x86_64-linux-gnu/libhwloc.so.5 (0x00007fb509077000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb508e6f000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fb508c6c000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb50a498000)
libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007fb508a61000)
libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007fb508857000)

C++静态库与动态库详细文档 参考 https://www.runoob.com/w3cnote/cpp-static-library-and-dynamic-library.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LD_LIBRARY_PATH 是一个环境变量,用于指定共享库文件的搜索路径。如果该变量设置不当,可能导致程序崩溃,出现 segmentation fault 错误。 出现这种错误的原因可能有很多,比如: - LD_LIBRARY_PATH 变量中指定的路径不存在或者权限不足; - LD_LIBRARY_PATH 变量中包含了不兼容的共享库; - LD_LIBRARY_PATH 变量中包含了不完整的共享库;等等。 解决这个问题的方法有很多种,下面列举一些可能的解决方案: 1. 检查 LD_LIBRARY_PATH 变量中指定的路径是否存在,并且权限是否允许读取该路径下的共享库文件。 2. 检查 LD_LIBRARY_PATH 变量中包含的共享库是否与程序所依赖的共享库版本不兼容,可以使用 ldd 命令查看程序依赖的共享库,比如: ``` ldd my_program ``` 该命令会列出程序所依赖的共享库及其版本信息。如果某个共享库的版本不兼容,可以尝试升级或者降级该共享库。 3. 检查 LD_LIBRARY_PATH 变量中包含的共享库是否不完整,可能缺少某些依赖库。可以使用 ldd 命令查看程序依赖的共享库,并且检查这些共享库是否存在,比如: ``` ldd my_program ``` 如果发现某些共享库不存在,可以尝试安装这些共享库。 4. 尝试使用其他的 LD_LIBRARY_PATH 变量设置,比如: ``` export LD_LIBRARY_PATH=/usr/local/lib ``` 如果程序需要多个共享库,可以将这些共享库的路径用冒号隔开,比如: ``` export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib ``` 可以根据实际情况调整。 5. 如果以上方法都无法解决问题,可以考虑升级程序或者操作系统,或者与程序开发者联系寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值