2008-09-06 109 views
0

我有一個繼承的項目,使用構建腳本(而不是make)來建立和鏈接項目與各種庫。有沒有辦法從構建腳本輸出中解析依賴關係樹?

當它執行構建時,我想分析構建輸出以確定實際靜態庫鏈接到最終可執行文件的位置和位置,以及它們來自哪裏。

該腳本正在編譯和鏈接GNU工具。

回答

0

靜態庫,在這方面使生活更加困難。在動態庫的情況下,您可以在生成的可執行文件上使用ldd並完成它。最好的選擇是某種配置文件。或者,您可以嘗試查找gcc/ld的-l參數。這些用於指定庫。你可以編寫一個腳本將其從輸出中提取出來,但我懷疑你必須手動完成它,因爲當你知道腳本應該查找什麼時,你可能已經知道答案。

0

這可能是可能的做一些有用的,例如, Perl,但你必須提供更多細節。另一方面,簡單分析腳本可能更容易...

1

您可以嘗試使用nm工具。如果有正確的選項,它會查看二進制文件(存檔或鏈接的圖像),並告訴您連接了哪些對象。

其實,這裏是一個班輪我在工作中使用:

#!/bin/sh 

nm -Ag $* | sed 's/^.*\/\(.*\.a\):/\1/' | sort -k 3 | grep -v ' U ' 

找到未定義符號的罪魁禍首。只要砍掉最後的grep表達式,它應該幾乎給你想要的東西。

相關問題