?在編程中,,庫(kù)是可以在程序中重用的預(yù)編譯代碼片段的分類,。庫(kù)為程序員簡(jiǎn)化了生活,因?yàn)樗鼈兲峁┝丝芍赜玫暮瘮?shù),、例程,、類、數(shù)據(jù)結(jié)構(gòu)等(由另一個(gè)程序員編寫(xiě)) ,,可以在程序中使用,。 例如,如果您正在構(gòu)建一個(gè)需要執(zhí)行數(shù)學(xué)操作的應(yīng)用程序,,您不必為此創(chuàng)建新的數(shù)學(xué)函數(shù),,您可以簡(jiǎn)單地使用該編程語(yǔ)言庫(kù)中的現(xiàn)有函數(shù)。 Linux 中的庫(kù)包括 libc (標(biāo)準(zhǔn) C 庫(kù))或 Glibc (標(biāo)準(zhǔn) C 庫(kù)的 GNU 版本),、 libcurl (多協(xié)議文件傳輸庫(kù)),、 libcrypt (用于加密,、哈希和 C 編碼的庫(kù))等等。 Linux 支持兩類庫(kù),,即: 靜態(tài)庫(kù)-在編譯時(shí)被靜態(tài)地綁定到程序,。 動(dòng)態(tài)或共享庫(kù)——在程序啟動(dòng)并加載到內(nèi)存中時(shí)加載,并在運(yùn)行時(shí)進(jìn)行綁定,。 動(dòng)態(tài)庫(kù)或共享庫(kù)可以進(jìn)一步分為: 動(dòng)態(tài)鏈接庫(kù)——這里程序與共享庫(kù)鏈接,,內(nèi)核在執(zhí)行時(shí)加載庫(kù)(如果它不在內(nèi)存中)。 動(dòng)態(tài)加載庫(kù)——程序通過(guò)調(diào)用庫(kù)函數(shù)來(lái)獲得完全控制權(quán),。 共享庫(kù)命名約定 共享庫(kù)有兩種命名方式: 庫(kù)名(a.k.a soname)和“文件名”(存儲(chǔ)庫(kù)代碼的文件的絕對(duì)路徑),。 例如,libc 的 soname 是 libc.so.6: 其中 lib 是前綴,,c 是描述性名稱,,所以意味著共享對(duì)象,6是版本,。它的文件名是:/lib64/libc.so.6,。注意,soname 實(shí)際上是指向文件名的符號(hào)鏈接,。 在 Linux 中定位共享庫(kù) 共享庫(kù)由 ld.so (或 ld.so.x)和 ld-linux 加載,。So (或 ld-linux.so.x)程序,其中 x 是版本,。在 Linux 中,/lib/ld-Linux.so.x 搜索并加載程序使用的所有共享庫(kù),。 程序可以使用庫(kù)名或文件名調(diào)用庫(kù),庫(kù)路徑存儲(chǔ)庫(kù)可以在文件系統(tǒng)中找到的目錄,。默認(rèn)情況下,,庫(kù)位于/usr/local/lib、/usr/local/lib64,、/usr/lib 和/usr/lib64中; 系統(tǒng)啟動(dòng)庫(kù)位于/lib 和/lib64中,。然而,程序員可以在自定義位置安裝庫(kù),。 |
|
來(lái)自: 新潮看世界 > 《Ubuntu基礎(chǔ)》