linux中动态链接库的搜索顺序
来源:互联网 发布:java写爬虫和python 编辑:程序博客网 时间:2024/06/03 22:40
linux中动态链接库的搜索顺序
//
// by kirk,2008.11.21,文中有bug请搞紧与我联系:-)
//
怎么设置这个选项?
需要在编译连接程序的时候使用-Wl,-rpath选项,假设一个程序test需要使用liblib.so库,如下所示进行编译连接:
g++ -o test -L. -llib -Wl,rpath=./ test.cpp
怎么设置这个选项?当然是设置linux下的环境变量就可以了。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
怎么设置这个选项?可以直接编辑ld.so.conf加入需要查找的路径,也可以在/etc/ld.so.conf.d目录下的己有文件中加入路径,或者在该目录下新建一个文件(名字为*.conf即可),再把需要的路径加入到该文件中。最后执行ldconfig即可生效。
环境变量LD_LIBRARY_PATH用来指定查找共享库时除了默认路径之外的其他路径。(该路径在默认路径之前查找)
移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时我们可以设置LD_LIBRARY_PATH。
例:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/work/lib/
这样就可以使用/work/lib/下的库文件了,运行程序后系统会自动到环境变量LD_LIBRARY_PATH指定的路径中查找其所需的库。
系统查找动态库的顺序
系统先找LD_LIBRARY_PATH下的库再找/lib and /usr/lib等路径下的库,还有/etc/ld.so.conf里指定的路径(如果ld.so.conf存在),man ldconfig for more information
[url=http://infomax/bbs/misc.php?action=viewratings&tid=111&pid=228][/url]
使Linux启动之后就加载LD_LIBRARY_PATH的路径
/etc/rc.d/rc.local文件中加入export
如果在链接时使用了"-R"和"-L"选项,则相关动态库的路径将保存在ELF文件中,于
是以后的运行中不再需要设置环境变量去定位动态库。比如,有一个
/usr/local/lib/libfoo.so,而你的bar程序需要这个libfoo.so,编译、链接时最好
这样 :gcc -Wall -pipe -O3 -o bar -R/usr/local/lib -L/usr/local/lib bar.c -lfoo
(#man gcc ,没发现-R或-rpath选项,待查)
- linux中动态链接库的搜索顺序
- linux中动态链接库的搜索顺序
- Linux动态链接(5)动态库符号搜索顺序
- 动态链接库搜索顺序
- linux环境程序在链接时和运行时搜索动态库的顺序
- linux动态链接库的加载顺序:
- 动态链接库(DLL)搜索顺序
- linux动态库搜索顺序
- Linux动态库搜索顺序
- Linux静态、动态库的链接顺序问题
- Linux(gnu)环境动态链接库的搜索路径
- Linux(gnu)环境动态链接库的搜索路径
- gcc中动态库和静态库的链接顺序
- gcc中动态库和静态库的链接顺序
- gcc中动态库和静态库的链接顺序
- windows与linux动态库搜索顺序
- Linux动态链接库搜索路径问题
- Linux动态链接库搜索路径
- 辞职信
- WORD2007插入脚注后连续分节符变成了分页符
- umbraco学习9:XSLT
- rails3 使用bootstrap step by step
- QR码编码原理三(日本汉字和中文编码)
- linux中动态链接库的搜索顺序
- 在Ubuntu上为Android系统
- C#与C++之间类型对应关系
- Java面试:基础32问
- 详细解析Linux一级目录结构
- 开始记录一些东西
- live555实现ffmpeg解码H264的rtsp流
- C++拷贝构造函数详解
- 谁在使用我的网站——用户分类