参考: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. WIN锁屏+鼠标移动事件

    winexec('rundll32.exe user32.dll, LockWorkStation', sw_hide); 1.shutdown.bat(关机)  rundll32.Exe shell ...

  2. JAVA-JSP内置对象之application对象

    相关资料:<21天学通Java Web开发> application对象1.application对象用来取得和设置Servlet的相关信息.2.application对象的生命周期是从服 ...

  3. 面试问卷-java&Oracle

    东方国信 - 软件开发人员面试问卷(ver1.001.002) 1.    通用编程知识问卷(所有编程人员必做)... 1 1.1      SQL问卷... 1 1.2      翻译... 2 2 ...

  4. Python3 ctypes简单使用

    >>> from ctypes import * >>> c_int() c_long(0) >>> c_char_p(b'hello') c_c ...

  5. centos7 安装oracle jdk 与openjdk 实现切换

    1. 分别安装oraclejdk 与openjdk #下载安装oraclejdk rpm -ivh --prefix=/usr.java/java1.8 ***.rpm #安装openjdk su - ...

  6. WPF中的命令简介

    使用Prism委托命令Demo: WPF委托命令DelegateCommand的传参方式 在WPF中使用命令的步骤很简单 1.创建命令 2.绑定命令 3.设置命令源 4.设置命令目标 WPF中命令的核 ...

  7. Java编程的逻辑 (53) - 剖析Collections - 算法

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  8. hdfs清空回收站

    1. 直接删除目录(不放入回收站) hdfs dfs -rm -skipTrash /usr/tmp/log/ 2. 清空回收站 hdfs dfs -expunge

  9. docker启动报错

    1.报“can’t create unix socket /var/run/docker.sock: is a directory” 这是由于存在容器自动启动 --restart= always导致的 ...

  10. Publishing to IIS 发布到IIS

    原文:https://docs.asp.net/en/latest/publishing/iis.html 发布到IIS Publishing to IIS By Rick Anderson and  ...