天天看點

linux ldd 檢視依賴的庫檔案

[[email protected] testProgs]# ldd openRTSP
linux-vdso.so.1 =>  (0x00007ffd48294000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003f77000000)
libm.so.6 => /lib64/libm.so.6 (0x0000003f6c400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003f76400000)
libc.so.6 => /lib64/libc.so.6 (0x0000003f6c800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003f6c000000)
           

第一列:程式需要依賴什麼庫

第二列: 系統提供的與程式需要的庫所對應的庫

第三列:庫加載的開始位址

通過上面的資訊,我們可以得到以下幾個資訊:

通過對比第一列和第二列,我們可以分析程式需要依賴的庫和系統實際提供的,是否相比對

通過觀察第三列,我們可以知道在目前的庫中的符号在對應的程序的位址空間中的開始位置

如果依賴的某個庫找不到,通過這個指令可以迅速定位問題所在;

原理: ldd不是個可執行程式,而隻是個shell腳本; ldd顯示可執行子產品的dependency的工作原理,其實質是通過ld-linux.so(elf動态庫的裝載器)來實作的。ld-linux.so子產品會先于executable子產品程式工作,并獲得控制權,是以當上述的那些環境變量被設定時,ld-linux.so選擇了顯示可執行子產品的dependency。

繼續閱讀