ldd(List Dynamic Dependencies)是一個 Shell 腳本,用於顯示可執行檔案或共享庫所依賴的動態連結庫。它並非獨立的可執行程式,而是透過設定環境變數(如 LD_TRACE_LOADED_OBJECTS)來讓動態連結器 ld-linux.so 輸出依賴資訊,而不實際執行程式。
ldd [選項]... 檔案...
--version:顯示版本資訊-v, --verbose:顯示詳細資訊,包含符號版本-d, --data-relocs:執行資料重定位,報告缺失的目標物件(僅 ELF 格式)-r, --function-relocs:執行函數重定位,報告缺失的目標物件與函數(僅 ELF 格式)--help:顯示說明當環境變數 LD_TRACE_LOADED_OBJECTS 不為空時,任何可執行程式在執行時只會顯示模組依賴,而不會真正執行。你可以在終端機測試:
export LD_TRACE_LOADED_OBJECTS=1
ls # 只會顯示 ls 的庫依賴,不會列出目錄內容
本質上,ldd 是透過 ld-linux.so(ELF 動態庫載入器)實現的。ld-linux.so 在可執行程式之前獲得控制權,當偵測到上述環境變數被設定時,選擇顯示依賴關係而非執行程式。
你也可以直接執行動態連結器來獲得相同結果:
/lib/ld-linux.so.2 --list 程式名稱
# 等同於 ldd 程式名稱
ldd 無法用於 a.out 格式的共享庫。/,舊版 libc5 會直接使用該路徑;否則會在標準路徑搜尋。執行當前目錄下的共享庫請加上 ./ 前綴。# 查看某程式的所有動態庫依賴
ldd /usr/bin/vim
# 詳細模式查看符號版本
ldd -v /usr/bin/python3
# 檢查是否有缺失的依賴
ldd -d /path/to/your/binary
Shell 腳本分析 Nginx 日誌:找出高頻訪問與慢查詢頁面
Linux 與 Windows 多重開機實戰:GRUB2 與 NTLDR/BCD 雙向引導菜單配置全攻略
Linux 升級 Python 導致 Tkinter 模組缺失完整解決:tk-devel 預裝、Setup.dist 啟用 _tkinter、重新編譯、yum 相容性修復
Shell 實時監控網卡流量腳本(基於 /proc/net/dev)
Oracle TNS-12555 權限拒絕錯誤排查:/var/tmp/.oracle 目錄權限修復實戰