如何让linux加载当前目录的动态库

转载 2007年09月19日 19:00:00
转自http://blog.csdn.net/wwwsq/archive/2006/09/21/1256577.aspx
 
linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。
windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于开发和测试无疑是比较方便的,尤其是debug和release版本的动态库需要经常切换进行测试的时候。linux的动态库搜索顺序虽然可以说成是比较严谨,但是相对来说也比较呆板,有时候会造成不便。

其实,linux也可以支持“加载当前目录的动态库”。只要设置合适的环境变量LD_LIBRARY_PATH就可以了。设置方法有以下三种:

1、临时修改,log out之后就失效
在terminal中执行:export LD_LIBRARY_PATH=./

2、让当前帐号以后都优先加载当前目录的动态库
修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3、让所有帐号从此都优先加载当前目录的动态库
修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

PS:修改ld.so.conf不能达到我们的目的,因为ld.so.conf只支持绝对路径。
=======================================================
权威资料参考:

LD_LIBRARY_PATH 环境变量 [UNIX]


语法 

LD_LIBRARY_PATH=installation_path/lib

说明 

LD_LIBRARY_PATH 环境变量仅在 UNIX 上使用。它由安装程序修改为包括 Adaptive Server Anywhere 库所在的目录。

这些库位于安装目录的 lib 子目录中(例如,/opt/SYBSasa9/lib)。

在 Mac OS X 上使用的是 DYLD_LIBRARY_PATH 环境变量,而在 AIX 上使用的则是 LIBPATH 环境变量。 

相关文章推荐

让linux加载当前目录的动态库

linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。window...

linux查看当前加载的所有动态库

因为之前用的一个动态库现在要换一个版本,所以就想看一下这个库是否还在加载。 转自:http://blog.csdn.net/leo115/article/details/7773887 ...

如何将程序的执行文件和静态加载动态库放在不同的目录

一般windows程序的exe和dll需要放在同一个目录,静态加载才不会报错,否则需要修改path环境变量,将所有没有和exe放在同一目录的dll的路径加在path环境变量中。 有没有一种方法不去手...

Linux下无法加载动态库问题总结

转载至: http://blog.chinaunix.net/uid-26212859-id-3256667.html
  • htb0556
  • htb0556
  • 2014年08月22日 10:28
  • 1736

linux设置可以在当前目录查找可执行文件的方法

建立一个新用户test5,指定用户的宿主目录为/home/test5 useradd -d /home/test5 test5 如何让linux在当前目录下找到可执行程序 第一步,没有参数的...
  • CA111IF
  • CA111IF
  • 2016年04月30日 14:45
  • 1053

linux下获取程序当前目录绝对路径

在linux下运行的程序经常需要获取自己的绝对路径,程序可能需要引用外部的资源文件,比如在../skin/目录下的图片,这样普通程序是没有问题,但当程序在安装到/usr/bin/目录中,或者为程序建立...

Linux中,去掉终端显示的当前目录的绝对路径

Linux中,去掉终端显示的当前目录的绝对路径 去~/.bashrc中,找到PS1变量的定义,如果没有,手动加上: 可以将显示输出到标题栏上: #export PS1="\[\e]2;\u@\H...

Linux动态库、静态库加载基础

Linux动态库、静态库加载基础静态库        在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项:           d -----从指定的静态库文件中删除文件       ...
  • gogor
  • gogor
  • 2011年06月20日 17:04
  • 2703

Linux下显示加载动态库注意事项

Linux下显示加载动态库注意事项     最近将Windows上的若干个工程移植到Linux平台,exe工程通过显示加载的方 式调用一个插件dll中的功能,在Windows平台上运行都很正常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何让linux加载当前目录的动态库
举报原因:
原因补充:

(最多只允许输入30个字)