編譯工具鏈就是編譯出所需要的內(nèi)核,庫(kù)函數(shù)以及應(yīng)用程序所使用的工具。編譯工具主要由以下3部分組成:
binutils:一組開發(fā)工具,包括連接器,匯編器和其他用于目標(biāo)文件和檔案的工具
gcc:包含GNU編譯器的集合,其中有C和C++編譯器
glibc:提供系統(tǒng)調(diào)用和基本函數(shù)的C庫(kù),比如open,malloc,printf等。所有動(dòng)態(tài)連接的程序都要用到它
GNU binutils 是一個(gè)二進(jìn)制工具包,主要包括:
ld-GNU的連接器
as-GNU匯編器
除此之外還包括以下工具:
addr2line -將地址轉(zhuǎn)化為文件名和行號(hào)
ar -創(chuàng)建、修改、解壓歸檔文件
c++filt - C++ 關(guān)鍵詞過濾器
gprof - 顯示總體信息
nlmconv - 將目標(biāo)代碼轉(zhuǎn)換為NLM
nm - 列出目標(biāo)文件的標(biāo)記
objcopy - 復(fù)制和翻譯(編譯器翻譯)目標(biāo)文件
objdump - 顯示目標(biāo)文件信息
ranlib - 創(chuàng)建歸檔文件索引
readelf - 顯示ELF 格式目標(biāo)文件的索引
size -列出目標(biāo)文件或者歸檔文件的段長(zhǎng)
strings -列出文件中的可打印字符串
strip - 刪除標(biāo)記
windres - Windows 源文件的編譯器
這中間的大部分程序都使用Binary File Descriptor library來進(jìn)行底層處理。很多程序還要用到 opcodes library 來進(jìn)行機(jī)器指令的匯編
和Wintel一樣,binutils也被引入到了各種各樣的UNIX系統(tǒng)中,它的引入使得GNU系統(tǒng)能夠更方便的編譯和連接程序。