ARM 交叉編譯工具鏈


命名規則

交叉編譯工具鏈的命名規則為:arch [-vendor] [-os] [-(gnu)eabi]

  • arch - 體系架構,如ARM,MIPS
  • verdor - 工具鏈提供商
  • os - 目標操作系統
  • eabi - 嵌入式應用二進制接口(Embedded Application Binary Interface (ABI) )

具體編譯器

  • arm-none-eabi-gcc

    ARM architecture,no vendor,not target an operating system,complies with the ARM EABI(ARM 程序接口)

    用於編譯 ARM 架構的裸機系統(包括 ARM Linux 的 boot、kernel)他使用的是
    newlib 這個專用於嵌入式系統的C庫,安裝方法:

    sudo apt-get install gcc-arm-none-eabi
    
  • arm-linux-gnueabi-gcc

    ARM architecture, creates binaries that run on the Linux operating system, and uses the GNU EABI (GUN 程序接口)

    也叫 arm-none-linux-gnueabi-gcc,因為一開始是沒有發行商的,目前由Linaro 公司發行(Linaro 則是由ARM、飛思卡爾、IBM、Samsung、ST-Ericsson和TI等廠商聯合,為開發不同半導體公司系統單芯片(SoC)平台的共通軟件的一個非盈利公司),使用glibc,可用於交叉編譯ARM系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序,安裝方法:

    sudo apt-get install gcc-arm-linux-gnueabi
    
  • arm-linux-gnueabihf-gcc

    arm-linux-gnueabi-gcc 區別不過是 gcc 的選項 -mfloat-abi 的默認值不同,即浮點數處理上的不同

    -mfloat-abi 有三種值:

    1. soft: 不用fpu進行浮點計算,即使有fpu浮點運算單元也不用,而是使用軟件模式
    2. softfp: armel架構(對應的編譯器為 arm-linux-gnueabi-gcc )采用的默認值,用fpu計算,但是傳參數用普通寄存器傳,這樣中斷的時候,只需要保存普通寄存器,中斷負荷小,但是參數需要轉換成浮點的再計算。
    3. hard: armhf架構(對應的編譯器 arm-linux-gnueabihf-gcc )采用的默認值,用fpu計算,傳參數也用fpu中的浮點寄存器傳,省去了轉換,性能最好,但是中斷負荷高。
  • arm-eabi-gcc
    Android ARM 編譯器

  • armcc
    ARM 公司推出的編譯工具,功能和 arm-none-eabi-gcc 類似,可以編譯裸機程序(u-boot、kernel),但是不能編譯 Linux 應用程序

  • arm-none-uclinuxeabi-gcc
    arm-none-uclinuxeabi 用於uCLinux,使用Glibc

  • arm-none-symbianelf-gcc
    用於symbian。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM