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