**:
ldd
作用:用來檢視程式執行所需的共享庫,常用來解決程式因缺少某個庫檔案而不能執行的一些問題。
示例:檢視test程式執行所依賴的庫:
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)
通過上面的資訊,我們可以得到以下幾個資訊:
通過對比第一列和第二列,我們可以分析程式需要依賴的庫和系統實際提供的,是否相匹配
通過觀察第三列,我們可以知道在當前的庫中的符號在對應的程序的位址空間中的開始位置
如果依賴的某個庫找不到,通過這個命令可以迅速定位問題所在;
註解原理: ldd不是個可執行程式,而只是個shell指令碼; ldd顯示可執行模組的dependency的工作原理,其實質是通過ld-linux.so(elf動態庫的裝載器)來實現的。ld-linux.so模組會先於executable模組程式工作,並獲得控制權,因此當上述的那些環境變數被設定時,ld-linux.so選擇了顯示可執行模組的dependency。
next
previous
linux命令之檢視程式動態庫依賴 ldd
乙個程式依賴很多的動態庫,類似windows下的depends工具可以檢視exe程式的依賴庫是否找到。在linux下,可以通過ldd命令檢視程式是否能找到依賴的動態庫,從而排查是缺少庫還是由於環境變數配置不正確導致的程式無法啟動。在shell環境下輸入ldd help檢視ldd命令的選項 用法 ld...
Linux 檢視動態庫依賴
檢視動態庫依賴3種方法 1 ldd bin grep linux gate.so.1 0xffffe000 libc.so.6 lib libc.so.6 0xb7eca000 lib ld linux.so.2 0xb801e000 2 ld trace loaded objects 1 bin ...
檢視安卓專案gradle庫依賴,解決依賴庫衝突問題
執行命令 gradlew 模組名 dependencies.gradlew 模組名 dependencies dep.log下面這張圖是我乙個工程裡執行結果的篩選部分.背景 工程編譯報錯 program type already present androidx.versionedparcelabl...