参考: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的需求有很多:

、兼容性测试
、将动态库放置它处,做临时测试

LD_LIBRARY_PATH不仅影响程序的加载,而且在链接阶段也会被搜索,顺序位于-L所指定的目录之后(没有-L选项也会被搜索).

好的使用LD_LIBRARY_PATH的例子应该是:

、升级共享库时,替换之前先测试一下
、类似的,升级后的某个程序可能依赖于一些动态链接库,如果你将某个链接库替换了,程序可能就无法工作了。这时候,你可以使用LD_LIBRARY_PATH指向存有备份的一个目录,然后,你可以没有顾忌地替换系统版本了。万一出错,拷贝回去就是了。

规范的LD_LIBRARY_PATH使用方法:

、绝不要设置全局的LD_LIBRARY_PATH
、如果你一定要发布(ship)一个依赖于标准库的程序,而且要把它安装到非标准位置,按下面方法之一实施:
()发布二进制.o文件,在安装过程中使用正确的已安装的库来重新链接。
()发布可执行文件时,嵌入一个很长的虚假运行时库路径,在安装过程中,使用二进制编辑器将其替换为正确的库路径。
()如果你必须使用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,此文件保存已排好序的动态链接库名字列表。

LD_PRELOAD & LD_LIBRARY_PATH 动态库路径的更多相关文章

  1. gcc 动态编译 动态库路径

    gcc 动态编译(共享库) 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令优点:体积小,编译快缺点:依赖性高 代码如下: [root@74-82-173-21 ...

  2. 转: gcc 指定运行时动态库路径

    gcc 指定运行时动态库路径 Leave a reply 由于种种原因,Linux 下写 c 代码时要用到一些外部库(不属于标准C的库),可是由于没有权限,无法将这写库安装到系统目录,只好安装用户目录 ...

  3. Linux动态库路径配置

    参考链接:https://blog.csdn.net/blade2001/article/details/32839937 为什么要关注动态库路径配置,是因为工作中遇到动态库依赖其他动态库,而其他动态 ...

  4. gcc -rpath 指定动态库路径

    gcc -rpath 指定动态库路径 http://blog.csdn.net/v6543210/article/details/44809405

  5. Linux 指定运行时动态库路径【转】

    转自:http://www.cnblogs.com/cute/archive/2011/02/24/1963957.html 众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/l ...

  6. linux 给运行程序指定动态库路径

    1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/li ...

  7. 转:动态库路径配置- /etc/ld.so.conf文件

    Linux 共享库 Linux 系统上有两类根本不同的 Linux 可执行程序.第一类是静态链接的可执行程序.静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”.因为这一原因,静态可 ...

  8. cgo -rpath指定动态库路径

    // #cgo CFLAGS: -Wall // #cgo LDFLAGS: -Wl,-rpath="/home/liuliang/ffmpeg-build/lib" // #cg ...

  9. 谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

    谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.ph ...

随机推荐

  1. JSP_运维_JSP项目部署到server(适合0经验新手)

    实战:真正server端部署jsp项目经验总结与记录(完整过程从0到10适合对server端部署0经验新手) jsp+tomcat+mysql项目部署到真正server; servermysql安装; ...

  2. Java中ArrayList实现原理

    简述: ArrayList可以理解为动态数组,与Java中的数组相比,它的容量能动态增长.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组中,因此最好能给出数组大小的预 ...

  3. IIS7 https 发生413错误 未显示页面,因为请求实体过大

    参考文档:     http://msdn.microsoft.com/zh-cn/library/cc737382(v=ws.10).aspx http://www.java123.net/v/12 ...

  4. 解释#ifdef ALLOC_PRAGMA代码段的原理

    By default, the kernel loader will load all driver executables and any global data that you may have ...

  5. android开发(42) 使用andorid操作蓝牙打印机

    最近接到一个需求,使用android发起打印任务,通过蓝牙连接打印机.条件如下: 打印机:南京富士通DPK760E,具有蓝牙功能 Android手机:普通手机,Android 4.4版本,具有蓝牙功能 ...

  6. 【jquery】jquery 实现许愿墙效果,可拖拽

    最近整理做过的项目,发现有个许愿墙的效果,今天拿出来给大家分享下. 先简单的介绍下功能点: 随机显示背景图或背景色 出现的位置随机 可以通过拖拽改变位置 好了,附上代码: <!doctype h ...

  7. 无法转换json问题 Error: Model.nodeDataArray value is not an instance of Array or NodeList or HTMLCollection

    var jsonobj=eval('('+t+')'); 使用eval 函数,讲后台json字符串转换为前台jsarray数组. 如果使用 ajax不会出现这种情况,因为会自动转换. 但是如果直接从后 ...

  8. visual studio 2015 2017 key vs2015 vs2017密钥

    Visual Studio Professional 2015简体中文版(专业版) KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2 Visual Studio Enterprise ...

  9. bootstrap底部消息提示插件

    http://www.bootcss.com/p/messenger/ 具体效果下载插件查看

  10. placeholder兼容IE8解决方案

    1.原因:placeholder是h5的新属性,IE10以前的浏览器(8.9)不支持此属性.   2.解决方法:jQuery三方插件  jquery-placeholder 3.快速开始: <! ...