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