Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 下查看程式動態庫依賴關係:ldd 命令完整指南

編輯:Linux 教學

ldd 是什麼?

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 在可執行程式之前獲得控制權,當偵測到上述環境變數被設定時,選擇顯示依賴關係而非執行程式。

直接呼叫 ld-linux.so

你也可以直接執行動態連結器來獲得相同結果:

/lib/ld-linux.so.2 --list 程式名稱
# 等同於 ldd 程式名稱

注意事項

  • ldd 無法用於 a.out 格式的共享庫。
  • 極舊的 a.out 程式(在支援 ldd 的編譯器發布前建立)可能導致不可預期的結果。
  • 若庫路徑包含 /,舊版 libc5 會直接使用該路徑;否則會在標準路徑搜尋。執行當前目錄下的共享庫請加上 ./ 前綴。

實用範例

# 查看某程式的所有動態庫依賴
ldd /usr/bin/vim

# 詳細模式查看符號版本
ldd -v /usr/bin/python3

# 檢查是否有缺失的依賴
ldd -d /path/to/your/binary
Copyright © Windows教程網 All Rights Reserved