ARM編譯器按照內(nèi)核類型可分為兩大類,其一是適用于Cortex-M/R內(nèi)核的編譯器,其二是適用于Cortex-A內(nèi)核的編譯器。 編譯器(套件)通常也稱作(編譯)工具鏈,下文可能會混用,但是是一個意思,請知悉。
適用于Cortex-M/R
內(nèi)核的編譯器 ARM芯片編譯器的供應商主要是ARM公司,IAR公司和GNU開源組織,其中ARM公司和IAR公司的ARM編譯器是收費軟件,GNU提供的ARM編譯器是開源免費軟件。ARM發(fā)布的編譯器
ARM發(fā)布的編譯器通過兩種形式提供: 單獨發(fā)布編譯器和隨ARM的IDE發(fā)布(ARM Develop Studio和Keil)。單獨發(fā)布的編譯器:適用于幾乎所有的ARM芯片,收費軟件,可在ARM開發(fā)者官網(wǎng)免費下載。
ARM Develop Studio: 適用于幾乎所有的ARM芯片,收費軟件,并且具有動態(tài)圖形性能分析功能、圖形分析功能(用于開發(fā)GPU)和連接ARM虛擬模型的功能(無需硬件即可在PC端進行性能分析和軟件開發(fā))。Keil MDK:適用于為微控制器開發(fā),收費軟件,國內(nèi)開發(fā)MCU最常用的IDE之一。
IAR編譯器僅隨IAR的IDE發(fā)布,主要用于微控制器開發(fā)收費,收費軟件,國內(nèi)開發(fā)MCU最常用的IDE之一。
ARM公司和IAR公司發(fā)布的編譯器都屬于收費軟件,使用Keil MDK和IAR Workbench就能高效的完成MCU軟件開發(fā),這也是我們平時使用最多的方式。
GNU發(fā)布的編譯器(工具鏈)
GNU Toolchain for the Cortex-R/M是基于GCC開發(fā)的,免費軟件,適用于Cortex-R/M作為內(nèi)核的MCU。ST公司STM32CubeIDE就是基于GNU工具鏈的。
一般它們是這個樣子的:arm-none-eabi-gccarm-none-eabi-g++arm-none-eabi-ararm-none-eabi-as...
適用于Cortex-A
內(nèi)核的編譯器
適用于Cortex-A核的編譯器主要由ARM公司、IAR公司、GNU開源組織和Google Android NDK項目發(fā)布,其中前三家的發(fā)布的形式同Cortex-M/R編譯器的發(fā)布形式一樣。
Android NDK編譯器
Android NDK編譯器,免費軟件,有兩種發(fā)布形式:其一是隨Android Studio發(fā)布,其二是單獨發(fā)布。Android NDK編譯器只能用于Android系統(tǒng)的NDK應用程序。
Cortex-A核一般用于復雜應用,通常都會搭載操作系統(tǒng)(Linux),所以ARM Cortex-A核的GNU編譯器從用途上可分為兩種:
-
編譯裸機程序的編譯器
arm-none-eabi-gcc
-
編譯操作系統(tǒng)上應用程序的編譯器
arm-none-linux-gnueabihf-gcc
GNU for ARM編譯器
的命名規(guī)則
arch [-vendor] [-os] [-(gnu)eabi] [-gcc]
參數(shù) | 含義 |
arch | 體系架構,如 arm , aarch64 , mips |
vendo | 工具鏈提供商,沒有 vendor 時,用 none 代替 |
os | 目標操作系統(tǒng),沒有 os 支持時,也用 none 代替 |
eabi | 嵌入式應用二進制接口(Embedded Application Binary Interface) |
Clang For ARM
提到編譯器就不得不提Clang,Clang 是一個高度模塊化開發(fā)的輕量級編譯器前端,具有編譯速度快、占用內(nèi)存小、錯誤提示友好等優(yōu)點,Clang的發(fā)展前景很好,現(xiàn)在很多地方已經(jīng)在使用Clang。
現(xiàn)在ARM Compiler 6已經(jīng)使用Clang作為編譯器前端了,在最新版的Keil中就能使用。
Android NDK從R11開始已經(jīng)支持Clang,并建議用戶盡快切換到Clang。
Clang與GCC的關系
編譯器是一套軟件,一般分為編譯器前端和編譯器后端。
-
編譯器前端:負責詞法分析、語法分析、語義分析和生成中間代碼。
- 編譯器后端: 負責代碼優(yōu)化和生成目標程序。
我們通常說的GCC是一套完整的編譯器軟件,包括編譯器前端和后端。 而Clang只是一個編譯器前端,Clang由蘋果公司開發(fā),據(jù)說效率要比GCC高很多,Clang通常使用LLVM作為編譯器后端。
關于留言
微信公眾號現(xiàn)在已經(jīng)關閉了留言功能,為方便大家學習交流,小編特意找到了這個留言小程序,增加了留言功能,雖沒有公眾號自帶的留言功能方便,但也不失為一個補救的辦法,希望能對大家有用。
你點的每個贊,我都認真當成了喜歡
免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!