第5課 嵌入式C語言編譯器
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
(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語言編譯器