Linux有問(wèn)必答:如何查看Linux上程序或進(jìn)程用到的庫(kù)
問(wèn)題:我想知道當(dāng)我調(diào)用一個(gè)特定的可執(zhí)行文件在運(yùn)行時(shí)載入了哪些共享庫(kù)。是否有方法可以明確Linux上可執(zhí)行程序或運(yùn)行進(jìn)程的共享庫(kù)依賴關(guān)系?
查看可執(zhí)行程序的共享庫(kù)依賴關(guān)系
要找出某個(gè)特定可執(zhí)行依賴的庫(kù),可以使用ldd命令。這個(gè)命令調(diào)用動(dòng)態(tài)鏈接器去找到程序的庫(kù)文件依賴關(guān)系。
- $ ldd /path/to/program
注意!并不推薦為任何不可信的第三方可執(zhí)行程序運(yùn)行l(wèi)dd,因?yàn)槟承┌姹镜膌dd可能會(huì)直接調(diào)用可執(zhí)行程序來(lái)明確其庫(kù)文件依賴關(guān)系,這樣可能不安全。
取而代之的是用一個(gè)更安全的方式來(lái)顯示一個(gè)未知應(yīng)用程序二進(jìn)制文件的庫(kù)文件依賴,使用如下命令:
- $ objdump -p /path/to/program | grep NEEDED
查看運(yùn)行進(jìn)程的共享庫(kù)依賴關(guān)系
如果你想要找出被一個(gè)運(yùn)行中的進(jìn)程載入的共享庫(kù),你可以使用pldd命令,它會(huì)顯示出在運(yùn)行時(shí)被載入一個(gè)進(jìn)程里的所有共享對(duì)象。
- $ sudo pldd <PID>
注意你需要root權(quán)限去執(zhí)行pldd命令。
或者,也可以選擇一個(gè)叫做pmap的命令行工具。它報(bào)告一個(gè)進(jìn)程的內(nèi)存映射,也能顯示出運(yùn)行進(jìn)程的庫(kù)文件依賴。
- $ sudo pmap <PID>
via: http://ask.xmodulo.com/check-library-dependency-program-process-linux.html