日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux下如何添加動態(tài)庫路徑?(linux添加動態(tài)庫路徑)

在Linux系統(tǒng)中,動態(tài)庫是一種非常常見的資源類型。許多程序和應用程序在運行時需要動態(tài)庫的支持,因此如何正確添加動態(tài)庫路徑成為了Linux系統(tǒng)運維和開發(fā)工程師需要掌握的一項技能。本文將介紹Linux下如何添加動態(tài)庫路徑,供讀者參考。

創(chuàng)新互聯(lián)公司專注于資溪網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供資溪營銷型網(wǎng)站建設,資溪網(wǎng)站制作、資溪網(wǎng)頁設計、資溪網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務,打造資溪網(wǎng)絡公司原創(chuàng)品牌,更為您提供資溪網(wǎng)站排名全網(wǎng)營銷落地服務。

1. 了解動態(tài)庫

在Linux操作系統(tǒng)中,動態(tài)庫是在程序運行時被加載的一種庫文件。與靜態(tài)庫相比,動態(tài)庫不是被編譯鏈接到程序中的,而是在程序運行時才進行載入。動態(tài)庫的使用可以幫助程序?qū)崿F(xiàn)真正的動態(tài)調(diào)用,提高程序的靈活性,同時也可以減小程序體積,避免因為大量重復使用的庫文件帶來空間浪費。

Linux中的動態(tài)庫一般以.so結(jié)尾,通過ldd命令可以查看當前程序所依賴的動態(tài)庫列表。例如:

$ ldd /bin/ls

linux-vdso.so.1 => (0x00007ffd4a1c1000)

libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2612f2e000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2612b67000)

libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2612936000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2612732023)

/lib64/ld-linux-x86-64.so.2 (0x00007f2613167000)

可以看到,/bin/ls程序所依賴的動態(tài)庫包括linux-vdso.so.1、libselinux.so.1、libc.so.6、libpcre.so.3、libdl.so.2和ld-linux-x86-64.so.2等幾個文件。

2. 添加動態(tài)庫路徑

默認情況下,Linux系統(tǒng)會在/lib、/usr/lib、/usr/local/lib等目錄下查找動態(tài)庫文件。如果程序需要使用的動態(tài)庫沒有在這些目錄中找到,就會導致程序無法執(zhí)行。

為了解決這個問題,可以通過添加動態(tài)庫路徑來指定Linux系統(tǒng)在特定目錄下查找需要的動態(tài)庫。有兩種方法可以實現(xiàn)這個目的:

2.1. 使用LD_LIBRARY_PATH環(huán)境變量

Linux系統(tǒng)中,環(huán)境變量LD_LIBRARY_PATH可以用來指定程序查找動態(tài)庫的目錄順序。設置這個環(huán)境變量可以使程序在運行時動態(tài)載入相應的庫文件。例如:

$ export LD_LIBRARY_PATH=/opt/mylibs

$ ./myprogram

這段命令的意思是將/opt/mylibs目錄添加到LD_LIBRARY_PATH環(huán)境變量的值中,然后運行名為myprogram的程序。

需要注意的是,環(huán)境變量LD_LIBRARY_PATH中應該指定包含動態(tài)庫文件的目錄,而不是具體的庫文件路徑。也就是說,如果/opt/mylibs目錄下有兩個庫文件libfoo.so和libbar.so,那么LD_LIBRARY_PATH應該是這樣的:

$ export LD_LIBRARY_PATH=/opt/mylibs

$ echo $LD_LIBRARY_PATH

/opt/mylibs

$ ldd /bin/myprogram

libfoo.so => /opt/mylibs/libfoo.so (0x00007fc2b89fc000)

libbar.so => /opt/mylibs/libbar.so (0x00007fc2b87f8000)

libc.so.6 => /lib64/libc.so.6 (0x00007fc2b842d000)

/lib64/ld-linux-x86-64.so.2 (0x000055d78f623000)

2.2. 在/etc/ld.so.conf文件中添加目錄

除了使用環(huán)境變量LD_LIBRARY_PATH之外,還可以將需要添加的動態(tài)庫路徑寫入/etc/ld.so.conf文件中。這個文件中可以包含一系列目錄,在系統(tǒng)啟動時會被系統(tǒng)動態(tài)庫鏈接器讀取,以便正確地載入程序所需要的動態(tài)庫。

需要在/etc/ld.so.conf文件中添加需要查找的目錄:

# echo “/opt/mylibs” > /etc/ld.so.conf.d/mylibs.conf

然后執(zhí)行如下命令使當前系統(tǒng)已經(jīng)更新的/ect/ld.so.cache文件失效,并重新生成一遍:

# ldconfig

這樣,當程序需要使用libfoo.so和libbar.so時,dynamic linker會自動在/opt/mylibs目錄下查找相應的庫文件,程序就可以正常運行了。

3.

在本文中,我們介紹了Linux下如何添加動態(tài)庫路徑。對于開發(fā)人員或系統(tǒng)管理員來說,掌握這個技術(shù)非常有幫助。通過使用LD_LIBRARY_PATH環(huán)境變量或在/etc/ld.so.conf文件中添加目錄,可以使程序在運行時自動查找到所需的動態(tài)庫文件,避免因為動態(tài)庫文件找不到而導致程序無法運行的問題。

相關(guān)問題拓展閱讀:

  • linux怎樣添加永久動態(tài)庫環(huán)境變量
  • Linux中如何創(chuàng)建靜態(tài)庫和動態(tài)庫

linux怎樣添加永久動態(tài)庫環(huán)境變量

/etc/ld.so.conf文件里增加動團判態(tài)滑激庫所在的路徑

或者/etc/ld.so.conf.d下新建.conf文件塌讓改,內(nèi)容為加動態(tài)庫所在的路徑

Linux中如何創(chuàng)建靜態(tài)庫和動態(tài)庫

靜態(tài)庫在程序編譯時會被連接到盯激目標代碼中,程序運行時將不再需要該靜態(tài)庫。 動態(tài)庫在程序編譯時并不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態(tài)庫存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include void hello(const char *name) { printf(“Hello %s!\n”, name); } 程序3: main.c #include “hello.h” int main() { hello(“everyone”); return 0; } 無論動態(tài)庫還是靜態(tài)庫都需要用到.o文件來生成,先編譯生成.o文件。 # gcc -c hello.c 1:創(chuàng)建靜態(tài)庫 靜態(tài)庫文件名的命名規(guī)范是以lib為前綴,緊接著跟靜態(tài)庫名,擴展名為.a。例如:我們將創(chuàng)建的靜態(tài)庫名為myhello,則靜態(tài)庫文件名就是libmyhello.a。 # ar cr libmyhello.a hello.o 使用靜態(tài)庫:只需要在你的源程序中加入包含你所需要凱螞襪使用到的函數(shù)的聲明(即包含頭文件),然后在gcc生成目標文件時候指明靜態(tài)庫就OK了(除非你包含的頭文件在/usr/include,庫文件在標準庫/usr/lib,/lib下,否則你得顯示指明他們的路徑) # gcc -o hello main.c -L. -lmyhello # ./hello Hello everyone! 刪除靜態(tài)庫文件運行./hello,程序正常運行,說明靜態(tài)庫公用函數(shù)已經(jīng)鏈接到目標文件。 2: 利用.o文件創(chuàng)建動態(tài)庫 動態(tài)庫文件擴展名為.so。 # gcc -shared -fPCI -o libmyhello.so hello.o 動態(tài)庫的使用與靜物檔態(tài)庫使用方式一樣 # gcc -o hello main.c -L. -lmyhello # ./hello ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 哦!出錯了。快看看錯誤提示,原來是找不到動態(tài)庫文件libmyhello.so。程序在運行時,會在/usr/lib和/lib等目錄中查找需要的動態(tài)庫文件。若找到,則載入動態(tài)庫,否則將提示類似上述錯誤而終止程序運行。

關(guān)于linux 添加動態(tài)庫路徑的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。


網(wǎng)站欄目:Linux下如何添加動態(tài)庫路徑?(linux添加動態(tài)庫路徑)
新聞來源:http://www.5511xx.com/article/dpdcsdi.html