場景
今天編譯sqlite3時候,發現了sqlite編譯時有些庫不認識,很好奇就查詢了一下
-libz -libdl
結果
libz
是壓縮庫,負責處理一些壓縮之類的事情,如果所編譯的程序有所使用,則可能牽涉到需要壓縮的內容。123
libdl
歷史上,該庫中的函數提供動態鏈接功能,但現在這些函數在libc
中了,不過爲了保持向後兼容性(回溯兼容性)這個庫保留了下來。新的應用開發不需要聲明改選項,主要是爲了向後兼容才使用的。45
大部分系統庫,都可以用以下指令查看具體的庫的全命,然後方便搜索:
ls /usr/lib/x86_64-linux-gnu/ | grep 'libz'
而關於系統動態庫的位置路徑6可以查看:
cat /etc/ld.so.conf
結果如下:
include /etc/ld.so.conf.d/*.conf
我在使用的主機中/etc/ld.so.conf.d/
目錄如下:
fakeroot-x86_64-linux-gnu.conf libc.conf vmware-tools-libraries.conf x86_64-linux-gnu.conf zz_i386-biarch-compat.conf
其中libc.conf中的內容和$LD_LIBRARY_PATH
對應。關於Linux目錄文件的含義,可以看看Linux目錄結構含義。
搜索Ubuntu中package包。在Search the contents of package那一欄中搜索對應的庫,如:
libz.so
↩︎Oracle Man page中關於
libdl
庫的描述,該文檔中還包括一些其它的庫。 ↩︎