嵌入式工程師都在用的編譯器,你最喜歡哪個?
發(fā)布時間:2023-11-07 14:17:48
欲先善其事必先利其器,對嵌入式工程師來說,編譯器就是不可或缺的神兵利器。
由于C語言歷史悠久,早期沒有規(guī)范,整個計算機產(chǎn)業(yè)也都處于拓荒的年代,所以就涌現(xiàn)了很多款C語言編譯器。
C語言的翻譯官
所謂編譯器,從概念上講就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。
其工作原理就是是首先對源代碼進(jìn)行詞法分析,將源代碼分解成一系列的單詞和語法元素。然后,將這些單詞和語法元素轉(zhuǎn)換成一系列機器指令,
這些指令可以被計算機理解并執(zhí)行。
最后,編譯程器將這些指令轉(zhuǎn)換成可執(zhí)行的機器代碼,這樣計算機就可以運行它們了。
用人話解釋,C語言和機器語言是兩種完全不同的語言,我們輸入電腦的代碼和機器理解的代碼不是一回事,所以編譯器就是把我們輸入到電腦的代碼翻譯成電腦能理解的代碼。
對嵌入式工程師來說,C語言是最基礎(chǔ)的一種編程語言,而且大多單片機也是以C為基礎(chǔ)的。
根據(jù)桌面端和嵌入式系統(tǒng)端,C語言編譯器分為兩種大類。其中,桌面端根據(jù)當(dāng)前主流桌面操作系統(tǒng),分為Visual C++ Studio、GCC及LLVM Clang三大編譯器;嵌入式系統(tǒng)端則分為很多流派,包括大名鼎鼎的Keil C51、Arduino板搭載的開發(fā)套件可用針對AVR微控制器的AVR GCC編譯器;Arm公司的ADS(ARM Development Suite)、RVDS(RealView Development Suite)、DS-5 Studio等;TI的CSS(Code Composer Studio);ADI(Analog Devices,Inc.)的Visual DSP++ 編譯器等。
工程師喜歡用什么
Visual Studio同時也被網(wǎng)友戲稱是宇宙第一編譯器,它是由微軟研發(fā),從1995年至今已經(jīng)近28年,支持多種編程語言,C#/VB、JavaScript 、.NET、Node.js、Java、Python、C++等等,一直深受開發(fā)者的喜愛。日常生活中幾乎你使用到的所有應(yīng)用程序,他都可以開發(fā)出來。它跨平臺語言,高度集成,具有友好的用戶界面、強大的調(diào)試功能、豐富的擴(kuò)展庫等特點,可以幫助快速高效地開發(fā)C語言程序。
被網(wǎng)友譽為C/C++開發(fā)神器的CLion也是一款不錯的編譯器。它是一款專為C語言和C++ 設(shè)計的IDE,其最大的優(yōu)點是跨平臺,在Linux、Mac、Windows 上都可以運行。最新版本CLion 2023支持C++14(幾乎完全支持)和C++17(初次支持),可以幫助用戶更快、更有效地編寫代碼。通過Disassembly view(反匯編視圖),即使沒有源代碼,用戶也可以輕松調(diào)試代碼。同時,在Catch的幫助下,用戶可以測試代碼,嘗試對Microsoft Visual C++編譯器進(jìn)行實驗性支持。
GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開發(fā)的編程語言編譯器。GCC的初衷是為GNU操作系統(tǒng)專門編寫的一款編譯器。GCC的外部接口長得像一個標(biāo)準(zhǔn)的Unix編譯器。使用者在命令列下鍵入gcc之程序名,以及一些命令參數(shù),以便決定每個輸入檔案使用的個別語言編譯器,并為輸出程序碼使用適合此硬件平臺的組合語言編譯器,并且選擇性地執(zhí)行連接器以制造可執(zhí)行的程序。幾乎全部的GCC都由C寫成,除了Ada前端大部分以Ada寫成。該編譯器在編譯速度、代碼生成質(zhì)量、診斷能力等方面都具有的表現(xiàn),因此被廣泛應(yīng)用于各種領(lǐng)域。GCC支持的主要處理器架構(gòu):ARM、x86、x86-64、MIPS、PowerPC等。
說到GCC就不得不提Clang,Clang具有編譯速度快、內(nèi)存占用小以及與GCC等其他優(yōu)秀特性的兼容性,這些特點使得許多工具都選擇使用它。
Clang是一個C、C++、Objective-C和Objective-C++編程語言的編譯器前端。它采用了底層虛擬機(LLVM)作為其后端。它的目標(biāo)是提供一個GCC的替代品。作者是克里斯·拉特納(Chris Lattner),在蘋果公司的贊助支持下進(jìn)行開發(fā),而源代碼授權(quán)是使用類BSD的伊利諾伊大學(xué)厄巴納-香檳分校開源碼許可,Clang主要由C++編寫。Clang本身性能優(yōu)異,其生成的AST所耗用掉的內(nèi)存僅僅是GCC的20%左右,經(jīng)測試證明Clang編譯Objective-C代碼時速度為GCC的3倍,還能針對用戶發(fā)生的編譯錯誤準(zhǔn)確地給出建議。
除了上面這些,在線編譯器也廣受歡迎。2010年Mbed團(tuán)隊發(fā)布了基于瀏覽器的IDE,這使得為基于Arm的微控制器編寫軟件變得更快,更容易。從那時起,在線編譯器已被全球數(shù)十萬開發(fā)人員使用,許多人也是在那里學(xué)會為微控制器編寫C++的。
2021年末,Mbed在線編譯器退役,由Keil Studio Cloud接替,Keil Studio Cloud是基于Arm為Mbed Studio和Mbed Online Compiler開發(fā)的技術(shù)構(gòu)建,旨在提供一個易于使用的快速原型開發(fā)環(huán)境,可用于IoT、ML和一般嵌入式開發(fā)。Keil Studio Cloud可以說是是Mbed Studio的進(jìn)化版本,使用相同的底層IDE框架和代碼庫,并適應(yīng)了對CMSIS生態(tài)系統(tǒng)的額外支持,與其他Keil工具(如Keil MDK)一樣。
以上為本次所有分享內(nèi)容