歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

GNU/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

Copyright © Linux教程網 All Rights Reserved