1.應用程序執行需要庫的支持
在制作自己的發行版時經常需要判斷某條命令需要哪些共享庫文件的支持,以確保指定的命令在獨立的系統內可以可靠的運行;
在Linux環境下通過ldd命令即可實現,在終端下執行:
ldd /bin/ls 。(注意 file指令)
即可得到/bin/ls命令的相關共享庫文件列表:
libtermcap.so.2 => /lib/libtermcap.so.2
libc.so.6 => /lib/libc.so.6
/lib/ld-linux.so.2 => /lib/ld-linux.so.2
注意:
在 ldd 命令打印的結果中,“=>”左邊的表示該程序需要連接的共享庫之 so 名稱,右邊表示由 Linux 的共享庫系統找到的對應的共享庫在文件系統中的具體位置。默認情況下,/etc/ld.so.conf 文件中包含有默認的共享庫搜索路徑。
2 知識點:
如果使用 ldd 命令時沒有找到對應的共享庫文件和其具體位置,可能是兩種情況引起的:
1.共享庫沒有安裝在該系統中;
2.共享庫保存在 /etc/ld.so.conf 文件列出的搜索路徑之外的位置。
通常情況下,許多開放源代碼的程序或函數庫都會默認將自己安裝到 /usr/local 目錄下的相應位置(如:/usr/local/bin 或 /usr/local/lib),以便與系統自身的程序或函數庫相區別。而許多 Linux 系統的 /etc/ld.so.conf 文件中默認又不包含 /usr/local/lib。因此,往往會出現已經安裝了共享庫,但是卻無法找到共享庫的情況。具體解決辦法如下:
檢查 /etc/ld.so.conf 文件,如果其中缺少 /usr/local/lib 目錄,就添加進去;注意:在修改了 /etc/ld.so.conf 文件或者在系統中安裝了新的函數庫之後,需要運行一個命令:ldconfig ,該命令用來刷新系統的共享庫緩存,即 /etc/ld.so.cache 文件。為了減少共享庫系統的庫搜索時間,共享庫系統維護了一個共享庫 so 名稱的緩存文件/etc/ld.so.cache。因此,在安裝新的共享庫之後,一定要運行 ldconfig 刷新該緩存。