<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式開發(fā)工具簡介

          嵌入式開發(fā)工具簡介

          作者: 時間:2006-12-09 來源:網(wǎng)絡(luò) 收藏

          通常為了把一個應(yīng)用程序從源文件轉(zhuǎn)變?yōu)榭蓤?zhí)行的二進制代碼,需要以下三個部分:

          一、編譯器

          二、(目標代碼)連接器

          三、程序庫

          其中編譯器部分還可細分為預(yù)處理器,C編譯器和匯編編譯器等. 的功能是C編譯器1.Binutils 最重要的成員是匯編編譯器和連接器,還包括一些二進制代碼工具. 程序庫通常是C或C++標準庫. 注意這三部分是彼此獨立的,也就是說,并不是非要Binutils中的工具,也可以使用其它匯編編譯器和連接器,也可以使用其它C程序庫.

          1.1

          GCC是公社的一個項目。是一個用于編程開發(fā)的自由編譯器。最初,GCC只是一個C語言編譯器,他是 C Compiler 的英文縮寫。隨著眾多自由開發(fā)者的加入和GCC自身的發(fā)展,如今的GCC以經(jīng)是一個包含眾多語言的編譯器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原來的 C Compiler變?yōu)镚NU Compiler Collection。也就是 GNU編譯器家族 的意思。

          GNU編譯器集GCC是通過使用一種叫做“寄存器轉(zhuǎn)換語言”(RTL)的方式實現(xiàn)的。假定現(xiàn)在有一種基本的機器描述性文件,它已經(jīng)能滿足大家的需要?,F(xiàn)在要做的僅僅是設(shè)置默認情況下使用的參數(shù)和如何將文件組合成可執(zhí)行文件的方式。GNU的文檔提供了所有必需的資料,使得用戶可以為新型的處理器的指令集合提供支持。如果要針對體系的機器建立一個新的目標機器,那么就必須指定默認編譯參數(shù)和定制系統(tǒng)的特定參數(shù)。對于特定的目標系統(tǒng),可以使用TARGET_DEFAULT宏來在target.h文件中定義編譯器的開關(guān)。目標t-makefile段指定了應(yīng)該構(gòu)建哪一個額外的例程和其編譯的方式。

          1.2 GNU binutils簡介

          GNU 開發(fā)工具鏈(toolchain)主要是指­ GNU Compiler Collection、GNU libc 以及用來編譯、測試和分析軟件的 GNU binutils三個大的模塊。

          GNU binutils 是一套用來構(gòu)造和使用二進制文件所需要的工具。其中兩個最為關(guān)鍵的 binutils 是 GNU 鏈接器——ld 和 GNU 匯編程序——as。這兩個工具是 GNU 工具鏈中的兩個完整部分,通常是由 GCC 前端進行驅(qū)動的。

          binutils包含的程序有:

          addr2line:程序地址轉(zhuǎn)換為文件名和行號。在命令行中給它一個地址和一個可執(zhí)行文件名,它就會使用這個可執(zhí)行文件的調(diào)試信息指出在給出的地址上是哪個文件以及行號。

          ar:建立、修改、提取歸檔文件。歸檔文件是包含多個文件內(nèi)容的一個大文件,其結(jié)構(gòu)保證了可以恢復(fù)原始文件內(nèi)容。

          As: 主要用來編譯GNU C編譯器gcc輸出的匯編文件,產(chǎn)生的輸出文件由連接器ld連接。gasp:是一個匯編語言宏預(yù)處理器。

          gprof:顯示程序調(diào)用段各種數(shù)據(jù)。

          ld:把一些目標和歸檔文件結(jié)合在一起,重定位數(shù)據(jù),并鏈接符號引用。通常,建立一個新編譯程序的最后一步就是調(diào)用ld。

          nm :列出目標文件中的符號。

          objcopy :把一個目標文件中的內(nèi)容復(fù)制到另一個目標文件。

          objcopy使用GNU BFD庫來讀寫目標文件。源文件和目的文件可以是不同的格式。

          objdump:顯示一個或者更多目標文件的信息。使用選項來控制其顯示的信息。

          ranlib:產(chǎn)生歸檔文件索引,并將其保存到這個歸檔文件中。

          readelf:顯示elf格式的可執(zhí)行文件的信息。

          size:列出目標文件每一段的大小以及總體的大小。默認情況下,對于每個目標文件或者一個歸檔文件中的每個模塊只產(chǎn)生一行輸出。

          Strings:打印某個文件的可打印字符串,這些字符串最少4個字符長,也可以使用選項-n設(shè)置字符串的最小長度。默認情況下,它只打印目標文件初始化和可加載段中的可打印字符;對于其它類型的文件它打印整個文件的可打印字符。這個程序?qū)τ诹私夥俏谋疚募膬?nèi)容很有幫助。

          Strip:丟棄某些目標文件中的全部或者特定符號。這些目標文件中可以包括歸檔文件。它至少需要一個目標文件名作為參數(shù)。strip直接修改參數(shù)指定的文件,不為修改后的文件重新命名。

          1.3

          Gdb:調(diào)試器,可使用多種交叉調(diào)試方式,gdb-bdm(背景調(diào)試工具),gdbserver(使用以太網(wǎng)絡(luò)調(diào)試)。

          本文引用地址:http://www.ex-cimer.com/article/258280.htm


          關(guān)鍵詞: GCC GNU GDB

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();