binutils工具集,軟體開發利器

來源:互聯網
上載者:User

標籤:

在binutils工具集中,以下工具是我們在做嵌入式軟體開發時需要掌握的:

as是彙編編譯器,用於將彙編代碼轉換為目標檔案。

add2line使用者得到程式指令地址所對應的函數,以及函數所在的源檔案名稱和函號;

ar用於建立和修改檔案檔案,以及從檔案檔案中抽取檔案。靜態庫(.a檔案)就是一種檔案檔案,需要用它產生和管理;

ld:連結器;

nm:用於列出程式檔案中的符號及符號在記憶體中的(開始)地址;符號包含C程式中的函數名和變數名;

objcopy:用於用來從程式檔案中拷貝出我們所指定的段。代碼格式轉換。

objdump:能顯示程式檔案的相關資訊和對程式檔案進行反組譯碼;

ranlib:用於產生一個檔案檔案的內容索引,以加快對檔案檔案的尋找速度。將該工具運用於靜態庫能提高庫參與連結的效率。

size:用於瞭解程式檔案中各段的大小。

strings:用於查看程式檔案內的可顯示字串。

strip:用於剝去程式檔案的調試資訊,以減少檔案所佔用的儲存空間。


以下是他們具體的用法:

1、addr2line [地址]  -f -e [應用程式名稱]





2、ar:靜態庫產生器

ar的參數:

c:表示建立一個檔案檔案;

r:指示將檔案增加到所建立的庫檔案中;

s:為了產生庫索引以提高庫被連結時的效率。


3、nm符號顯示器


總體來說,nm用於列出程式檔案中的符號。nm所列出的每一行由三個部分組成。

第一列:是指程式運行時符號在記憶體中的地址。它表示函數或變數的開始地址;

第二列:是指相應的符號存放在哪一個段;

第三列:是符號的名稱;


針對第二列:

A:表示符號所對應的值時絕對的且在以後的串連過程中也不會改變;

B或b:表示符號位於未初始化的資料區段中;

C:表示沒有被初始化的公用符號;

D或者d:表示符號位於初始化的資料區段(.data段)中。

N:表示符號是沒有調試用的。

p:表示符號位於一個棧回溯段中。

R或者r:表示符號位於唯讀資料區段(.rdata段)中 。

T 或者t:表示符號位於程式碼片段(.text段)中。

U:表示符號沒有被定義。


4、objdump -h hello

5、objcopy

6、ranlib庫索引產生器: nm -s libmy.a

7、size

8、strings 字串窺視器 : strings hello

9、strip 程式檔案瘦身器。


參考文獻:專業嵌入式軟體開發  李雲。

binutils工具集,軟體開發利器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.