Linux下如何查看程序連結的動態連結庫

在大型的多人協作項目中,往往會把共用的基礎結構或者算法提取出來,作為一個公共的common模塊,common模塊中一般包含各個模塊的通訊協議和公共基礎函數,其它模塊都依賴於這個公共模塊進行開發。

common庫也會帶來一些問題,最近遇到如下問題:

1.程序A依賴於common庫;

2.程序B依賴於commom庫;

3.由於某些原因,程序A和程序B依賴的common庫有些差異。

4.程序A鏈接時,總是鏈接出錯,鏈接到程序B的庫。

有經驗的一眼就能看出來問題出在哪裡,怎麼定位程序到底鏈接的是哪個動態鏈接庫呢?

ldd查看程序依賴的動態鏈接庫

ldd命令主要是程序員或是管理員用來查看可執行文件所依賴的動態鏈接庫的。

$ ldd /bin/grep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb7eca000) /lib/ld-linux.so.2 (0xb801e000)

可以看到命令的輸出的就是 `/bin/grep` 所依賴的動態鏈接庫。

ldd還是一個比較危險的命令,黑客可以通過它攻擊用戶,劫持系統,感興趣可自行百度之。


分享到:


相關文章: