2011-06-28 85 views
6

我最近花了很多時間試圖修復有問題的ld腳本。 一旦我繪製了(在紙上)所有不同的部分,我就可以找出問題所在。鏈接器腳本生成器

所以我開始尋找某種LD腳本生成器,但找不到任何! 有沒有人知道這樣的工具是否存在? 可以導入/導出ld腳本或map-file/elf-file並顯示不同的對象/部分和地址的東西?

我知道這裏有一些IDE,你不需要擔心LD腳本,但我使用的是eclipse,它甚至不提供語法高亮顯示!

+0

在Green Hills MULTI工具集中有這樣的工具,它是專有的。我還沒有在其他地方看到過這樣的工具。也就是說,我從來沒有發現它對顯示或編輯有用。不過,使用readelf將可執行文件的分區邊界轉儲並滾動您自己的圖表可能會很快。關於'一些IDE'的提示讓我質疑你在鏈接描述文件中究竟做了什麼,但是...... – djs

+0

是的,你上面提出的建議是我實際做的。我想要做的是使這項工作自動(某種圖形用戶界面)。我的鏈接器腳本非常複雜,在閃存/內部和外部RAM中有許多不同的部分,因此手動檢查鏈接器腳本的魔力是一項耗時的工作。 – theAlse

回答

2

據我所知,有爲了這個目的沒有非專有工具。

+0

我會接受這個答案,因爲我還沒有看到一個工具來做到這一點呢! – theAlse

3

我不知道任何用於LD腳本的所見即所得編輯器,但我可能能夠幫助您以圖形方式調試這些類型的問題。

我認爲這是一個運行時問題,而不是編譯時問題。如果是這種情況,那麼您可以使用鏈接器的地圖輸出來瞭解發生了什麼。

gcc -Wl,-Map=main.map main.c 

映射文件然後可以使用grep解析,或者你可以使用一個graphical viewer的文件來調試問題,段和符號。

您還可以使用納米獲取某個鏈接的可執行類似的結果:

nm -S --size-sort a.out