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

5_嵌入式C語言編譯器

關鍵詞:GCC與gcc有什麼不同、交叉編譯、 gcc關鍵編譯選項

1. GCC與gcc有什麼不同?

  • GCC(GNU Compiler Collection):GNU編譯器集合,包含眾多語言的編譯器。如:C、C++、Java、D、Objective-C
  • gcc:特指GCC中的C語言編譯器

2. GCC VS 嵌入式

  • 多數嵌入式作業系統都是基於GCC進行原始碼編譯,如Linux,Android,等。
  • 實際開發中的使用:
    1)核心開發:gcc
    2)應用開發:gcc/g++/gdc

3. 什麼是交叉編譯?

  • 背景:嵌入式裝置往往資源受限,不可能在嵌入式上直接對處理器進行程式設計
  • 解決方案:在開發主機上(PC)對原始碼進行編譯,最終生成目標主機(嵌入式裝置)的可執行程式

4. gcc是如何進行交叉編譯的?

  • 配置目標主機編譯工具鏈(如:arm-linux)
  • 配置工具的具體版本
    1)根據具體的目的碼選擇相應的工具鏈版本
    2)正確使用關於硬體體系結構的特殊編譯選項

5. gcc關鍵編譯選項

  • 預處理指令:前處理器文字替換
    gcc -E file.c -o file.i
  • 編譯指令:編譯器將c程式碼翻譯成彙編程式碼
    gcc -S file.i -o file.s
  • 彙編指令:彙編器將程式碼彙編成目標機器上的二進位制程式碼
    gcc -c file.s -o file.o
  • 生成對映檔案:
    gcc -wl,-Map=test.map file.c
  • 巨集定義:
    gcc -D`TEST=”test” ’ file.c
  • 獲取系統標頭檔案路徑:
    gcc -v file.c
  • 生成依賴關係:
    gcc -M file.c
    gcc -MM file.c
  • 指定檔案及庫檔案搜尋路徑
    gcc test.c -L -lfunc
    -L選項:指定庫檔案的搜尋路徑
    -l選項:指定庫檔案

宣告:此文章為本人在學習狄泰軟體學院《十二月提升計劃》所做的筆記,參考書籍《專業嵌入式軟體開發》——李雲,文章中包含狄泰軟體資料內容和《專業嵌入式軟體開發》資料內容,一切版權歸狄泰軟體

《專業嵌入式軟體開發》所有!