1. 程式人生 > >第5課 嵌入式C語言編譯器

第5課 嵌入式C語言編譯器

進行 1.5 編譯器 編譯過程 結構 java 頭文件路徑 color bject

1. GCC與gcc

(1)GCC:(GNU Compiler Collection)

  GNU編譯器集合,包含眾多語言的編譯器,如C、C++、Java、D、Objective-C等

(2)gcc特指GCC中的C語言編譯器

(3)GCC與嵌入式:多數嵌入式操作系統都是基於GCC進行源碼編譯。如Linux、VxWorks、Android等。

(4)實際開發中,內核開發一般用gcc應用開發一般用gcc/g++/gdc

2. 交叉編譯

(1)背景

  ①嵌入式設備往往資源受限

  ②不可能在嵌入式上直接對處理器進行編程

(2)解決方案

  ①在開發主機(PC)上對源碼進行編譯

  ②最終生成目標主機(嵌入式設備)的可執行程序

(3)gcc是如何進行交叉編譯的?

  ①配置目標主機的編譯工具鏈如:arm-linux

  ②配置工具鏈的具體版本(根據具體的目標代碼選擇相應的工具鏈版本,正確使用關於硬件體系結構的特殊編譯選項

(4)案例:大型企業嵌入式開發環境

技術分享

3. 初識編譯器

(1)編譯器構成

技術分享

(2)編譯過程

技術分享

(3)擴展問題:多語言混合開發

  ①開發方式1:從語言到語言(如.NetFrame框架)

技術分享

  ②開發方式2:從語言到可執行的二進制代碼(如QQ的開發)

技術分享

  ③開發方式3:

技術分享

4. gcc關鍵編譯選項

(1)預處理指令:gcc -E file.c -o file.i

(2)編譯指令: gcc -S

file.i -o file.s

(3)匯編指令: gcc -c file.s –o file.o

(4)生成映射文件:gcc -WL,-MP=test.map file.c

(5)宏定義: gcc -D‘TEST="test"‘ file.c

(6)獲取系統頭文件路徑:gcc -v file.c

(7)生成依賴關系:

  ①獲取目標的完整依賴關系:gcc -M test.c

  ②獲取目標的部分依賴關系:gcc -MM test.c

(8)指定庫文件及庫文件搜索路徑:

  ①gcc test.c -L. -lfunc //.表示當前目錄

  ②其中-L選項指定庫文件的搜索路徑,-l選項指定庫文件

【實例分析】gcc編譯選項

第5課 嵌入式C語言編譯器