GNU/Linux中动态库的搜索路径的指定方法汇总 - Linux系统
|
动态链接时、执行时搜索路径顺序:
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 (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

