参考:http://www.cnblogs.com/waterlin/archive/2011/07/14/2106056.html
143上的glibc较低,同学又不能进行升级(造成全局影响),所以使用了LD_LIBRARY_PATH,将179上的/lib,然后在.bashrc中添加
export LD_LIBRARY_PATH=path/lib:path/lib/x86_64-linxu-gnu
参考自:
http://blog.csdn.net/haoel/article/details/1602108
http://skatings.blogbus.com/logs/50437681.html
LD_PRELOAD 是这样的一个环境变量:它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。该功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们 可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。
在Linux下面,共享库的寻找和加载是由 /lib/ld.so实现的。ld.so在标准路径(/lib, /usr/lib) 中寻找应用程序的共享库。
那么:
如果需要用到的共享库在非标准路径,ld.so怎么找到这些库呢?
方法一:
链接时候通过 -R选项(或 -rpath)指定 run-time path.
方法二:
使用LD_LIBRARY_PATH来处理非标准路径的共享库。ld.so加载共享库的时候,也会查找这个变量锁设置的路径。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path
export LD_LIBRARY_PATH
方法三:
(1)将非标准库路径加入 /etc/ld.so.conf;/etc/ld.so.conf文件内存放着可被Linux共享的动态链接库所在目录的名字(系统目录/lib, /usr/lib除外)
(2)运行ldconfig跟新 /etc/ld.so.cache;ld.so加载共享库的时候,会从ld.so.cache查找。
方法四:
(1)将所生成的动态库,放入 /lib 或 /usr/lib 目录下;
(2)调用ldconfig 否则找不到library (ldconfig 跟新 ld.so.cache).
动态库的搜索路径搜索的先后顺序是: 编译目标代码时指定的动态库搜索路径 环境变量LD_LIBRARY_PATH指定的动态库搜索路径 配置文件/etc/ld.so.conf中指定的动态库搜索路径 默认的动态库搜索路径/lib 默认的动态库搜索路径/usr/lib
附:
参考自:http://www.ituring.com.cn/article/22101
LD_LIBRARY_PATH是一个环境变量,它的作用是为ld.so在运行时提供一个额外的搜索路径列表。
出于安全原因,对于已设置setuid或setgid的可执行文件,LD_LIBRARY_PATH被完全忽略。
LD_LIBARY_PATH的需求有很多:
1、兼容性测试 2、将动态库放置它处,做临时测试
LD_LIBRARY_PATH不仅影响程序的加载,而且在链接阶段也会被搜索,顺序位于-L所指定的目录之后(没有-L选项也会被搜索).
好的使用LD_LIBRARY_PATH的例子应该是:
1、升级共享库时,替换之前先测试一下 2、类似的,升级后的某个程序可能依赖于一些动态链接库,如果你将某个链接库替换了,程序可能就无法工作了。这时候,你可以使用LD_LIBRARY_PATH指向存有备份的一个目录,然后,你可以没有顾忌地替换系统版本了。万一出错,拷贝回去就是了。
规范的LD_LIBRARY_PATH使用方法:
1、绝不要设置全局的LD_LIBRARY_PATH 2、如果你一定要发布(ship)一个依赖于标准库的程序,而且要把它安装到非标准位置,按下面方法之一实施: (1)发布二进制.o文件,在安装过程中使用正确的已安装的库来重新链接。 (2)发布可执行文件时,嵌入一个很长的虚假运行时库路径,在安装过程中,使用二进制编辑器将其替换为正确的库路径。 (3)如果你必须使用LD_LIBRARY_PATH,将其封装起来(如在局部的脚本中使用),而不至于影响其它程序。
附:
参考:http://www.cnblogs.com/openix/admin/EditPosts.aspx?postid=2431791
ldconfig是动态链接库的管理命令。该命令主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库,进而创建/跟新ld.so所需的链接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。