加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

GNU/Linux中动态库的搜索路径的指定方法汇总 - Linux系统

发布时间:2014-12-04 23:37:23 所属栏目:Linux 来源:站长网
导读:动态链接时、执行时搜索路径顺序: 1.编译目标代码时使用-L指定的动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 3.配置文件/etc/ld.so.con
动态链接时、执行时搜索路径顺序:

1.编译目标代码时使用-L指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib;

5.默认的动态库搜索路径/usr/lib。

以上的3~5步中,不再需要手动地指定动态库搜索路径了,

有一个可以进行配置更新默认的搜索路径的命令:

ldconfig

ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

例如:

我编译了个动态库文件,copy到/usr/lib下,这时使用ldconfig搜索一下我复制过去的库是否已经在能够配置成功;

返回栏目页:http://www.bianceng.cn/OS/Linux/

root@ubuntu:/home/v0id/tools/android-ndk-r9c/samples/hello-jni# cp libs/x86/libhello-jni.so /usr/lib

root@ubuntu:/home/v0id/test# ldconfig -p | grep jni

无任何返回结果;

使用ldconfig命令进行配置后:

root@ubuntu:/home/v0id/test# ldconfig  /usr/lib

root@ubuntu:/home/v0id/test# ldconfig -p | grep jni

root@ubuntu:/home/v0id/test# ldconfig -p | grep jni

libhello-jni.so (ELF) => /usr/lib/libhello-jni.so

例子2:

不在默认目录下,/etc/ld.so.conf文件中的内容为:

include /etc/ld.so.conf.d/*.conf

那么在/etc/ld.so.conf.d/建立一个yygytest.conf文件,配置库的新路径,内容如下:

/home/v0id/test/yygylib

同时把放在/usr/lib目录下的libhello-jni.so动态库移动到/home/v0id/test/yygylib目录下,再使用ldconfig更新动态库路径的配置,命令如下:

root@ubuntu:/etc/ld.so.conf.d# mv /usr/lib/libhello-jni.so /home/v0id/test/yygylib/

root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni

libhello-jni.so (ELF) => /usr/lib/libhello-jni.so

root@ubuntu:/etc/ld.so.conf.d# ldconfig

root@ubuntu:/etc/ld.so.conf.d# ldconfig -p | grep jni

libhello-jni.so (ELF) => /home/v0id/test/yygylib/libhello-jni.so

当一个动态库文件从目录中删除时,再次使用ldconfig即可更新动态库的路径的配置:_(

作者:csdn博客 yygydjkthh

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读