ldd 作用:用來查看程式運行所需的共享庫,常用來解決程式因缺少某個庫文件而不能運行的一些問題。
示例:查看test程序運行所依賴的庫::
/opt/app/todeav1/test$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不是個可執(zhí)行程式,而只是個shell腳本; ldd顯示可執(zhí)行模塊的dependency的工作原理,其實質(zhì)是通過ld-linux.so(elf動態(tài)庫的裝載器)來實現(xiàn)的。ld-linux.so模塊會先于executable模塊程式工作,并獲得控制權(quán),因此當(dāng)上述的那些環(huán)境變量被設(shè)置時,ld-linux.so選擇了顯示可執(zhí)行模塊的dependency。