天天看點

ldd 指令介紹

1.在制作自己的發行版時經常需要判斷某條指令需要哪些共享庫檔案的支援,以確定指定的指令在獨立的系統内可以可靠的運作;

在Linux環境下通過ldd指令即可實作,在終端下執行:

ldd /bin/ls //ldd指令通常使用"-v"或"--verbose"選項來顯示所依賴的動态連接配接庫的盡可能的詳細資訊。

即可得到/bin/ls指令的相關共享庫檔案清單:

注意:在 ldd 指令列印的結果中,“=>”左邊的表示該程式需要連接配接的共享庫之 so 名稱,右邊表示由 Linux 的共享庫系統找到的對應的共享庫在檔案系統中的具體位置。預設情況下,/etc/ld.so.conf 檔案中包含有預設的共享庫搜尋路徑。

2.龍芯電腦中更新了庫檔案時,經常會引起某些軟體無法使用,可以通過ldd指令來檢查軟體需要那些共享庫的支援,如:以前在安裝apt-get install devscripts軟體時安裝更新了很多庫,結果導緻OpenOffice無法使用,可以使用指令:

#ldd /opt/openoffice.org2.0/program/soffice.bin

檢視其依賴的共享庫檔案。

知識點:

1、如果使用 ldd 指令時沒有找到對應的共享庫檔案和其具體位置,可能是兩種情況引起的:

共享庫沒有安裝在該系統中;

共享庫儲存在 /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 重新整理該緩存。

2、使用nm指令也可以擷取庫函數的資訊;nm指令可以列出一個函數庫檔案中的符号表,它對靜态的庫函數和共享的庫函數都能起作用。

繼續閱讀