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