C語言作為高級(jí)語言,用其編寫的程序指令機(jī)器并不能識(shí)別,因此需要有一個(gè)編譯器將其轉(zhuǎn)換為機(jī)器可識(shí)別的二進(jìn)制指令。C語言已經(jīng)出現(xiàn)50多年的時(shí)間,其相關(guān)的編譯器種類眾多,從最早先的turbo c系列編譯器,到大名鼎鼎的gcc,還有基于LLVM的clang,各有優(yōu)劣,而且在多個(gè)平臺(tái)(如windows、Linux、MAC)上都廣泛使用。同時(shí)由于Windows的強(qiáng)勢(shì)存在,其自家的Visual C/C++編譯器也有不少的應(yīng)用。 一般C語言程序是在PC上編寫,并將其編譯成可執(zhí)行文件,最終放到電腦或設(shè)備上去執(zhí)行。 現(xiàn)在主流PC的CPU架構(gòu)+操作系統(tǒng)組合有多種,其編譯生成的可執(zhí)行程序可能在不同的架構(gòu)下執(zhí)行,因此對(duì)于同一類編譯器,可能需要針對(duì)CPU架構(gòu)和系統(tǒng)組合也要有相應(yīng)的版本。 注:蘋果自研的ARM架構(gòu)CPU M1將會(huì)在2022年用于最新的MAC pro筆記本中。 編譯程序一般分為兩種情況(如下舉例): A、 在X86+Windows系統(tǒng)下編譯C程序,可以直接在X86+Windows系統(tǒng)的PC上直接執(zhí)行; B、 在X86+Windows系統(tǒng)下需要x86-Arm交叉編譯器編譯C程序,才能在ARM平臺(tái)設(shè)備上執(zhí)行; 因此需要根據(jù)開發(fā)編譯平臺(tái)與目標(biāo)運(yùn)行平臺(tái)選擇編譯器類別,而有些IDE集成了官方對(duì)應(yīng)的C編譯,安裝就可以使用,如: 1、對(duì)于Visual C/C++編譯器,集成開發(fā)環(huán)境Visual Studio也集成了Visual C/C++編譯器,安裝Visual Studio后,即可IDE中編輯/編譯C程序; 2、對(duì)于ARM(R/M系列)和8051系列,集成開發(fā)環(huán)境(IDE)中可能已經(jīng)集成了交叉編譯器環(huán)境,如MDK KEIL中已經(jīng)集成了ARMCC交叉編譯器,安裝MDK后,就可以在IDE中編輯/編譯C程序。 C編譯器很多,以下分別介紹當(dāng)前主流的幾個(gè)C編譯器!首先是大名鼎鼎的GCC編譯器。 一、GCC編譯器 GCC是(GNU Compiler Collection)的縮寫,是由GNU開發(fā)的編程語言譯器。最初是為C語言而編寫,后面陸陸續(xù)續(xù)擴(kuò)充了C++、 Objective-C、 Fortran、Java、Ada和Go語言,也包括了這些語言的庫(如libstdc++,libgcj等),因此GCC是GNU編譯器套件。 Gcc編譯器鏡像在其官方FTP服務(wù)器上可以下載,目前最新版本為gcc-11.2.0。 1、 gcc for ARM 當(dāng)今移動(dòng)端手機(jī)處理器基本上是基于ARM架構(gòu),而許多智能設(shè)備或物聯(lián)網(wǎng)設(shè)備內(nèi)置芯片的CPU內(nèi)核也是基于ARM,因此,ARM公司也不斷更新維護(hù)針對(duì)ARM架構(gòu)的交叉c編譯器。 ARM從1985年設(shè)計(jì)的ARMv1芯片,到現(xiàn)在ARMv9,已經(jīng)有30幾年的歷史,各個(gè)架構(gòu)典型的處理器版本如下表所示: 目前廣泛使用的是ARMv7、ARMv8;ARMv7在智能設(shè)備芯片、微處理器MCU上應(yīng)用比較多,比如NXP推出的IM6ULL采用ARM Cortex-A7,ST推出的STM32F4采用ARM Cortex-M4內(nèi)核;而目前流行的手機(jī)處理器,基本都是ARMv8架構(gòu)中的Cortex-A系列中,比如現(xiàn)在華為P50系列的麒麟9000處理器就是采用ARM Cortex-A77,小米11系列的驍龍888處理器采用ARM Cortex-A78,因此,理論上驍龍888比麒麟9000處理器會(huì)強(qiáng)一些。 ARMv9架構(gòu)是ARM今年剛推出的全新的下一代架構(gòu),首款基于Armv9架構(gòu)的大核CPU Arm Cortex-A710以及首款高效率小核Arm Cortex-A510的手機(jī),估計(jì)明年會(huì)到來。 ARMv8的架構(gòu)繼承以往ARMv7與之前處理器技術(shù)的基礎(chǔ),除了現(xiàn)有的16/32bit的Thumb2指令支持外,也向前兼容和擴(kuò)充了現(xiàn)有A32(ARM 32bit)指令集的AArch32架構(gòu) ,新增了基于64bit的AArch64架構(gòu); A、 基于32位Arm Cortex-A, Arm Cortex-M, and Arm Cortex-R處理器的GCC交叉編譯工具鏈(基本上ARMv7架構(gòu)下使用),ARM開發(fā)者網(wǎng)站提供了下載,包含Windows, Linux, Mac OS X操作系統(tǒng)平臺(tái),目前最新版本為10.3-2021.07,下載地址: https://developer./tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads A、 基于AArch32(擴(kuò)充版32位)與AArch64(新增64位)的交叉編譯器(ARMv8架構(gòu)下),ARM開發(fā)者網(wǎng)站提供了下載,包含Windows, Linux, Mac OS X操作系統(tǒng)平臺(tái),目前最新版本為10.3-2021.07,下載地址: https://developer./tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads 2、 Linux下gcc編譯器 Linux一般自帶gcc編譯器,可以通過gcc –v查看其版本號(hào),如下圖: 從打印信息中 “Target:x86-64-linux-gnu”,可以看出默認(rèn)的gcc編譯器是針對(duì)x86架構(gòu)的,因此編譯得出的可執(zhí)行文件只能在x86架構(gòu)下執(zhí)行;而一般情況是在Linux下開發(fā)編譯C程序,然后在ARM下執(zhí)行,因此需要安裝交叉編譯C編譯器。 在ARM官網(wǎng)上可以下載最新版本,或芯片廠家會(huì)提供對(duì)應(yīng)修改過的版本,同時(shí)有些第三方組織提供修改過的編譯器版本,如Linaro GCC編譯器,下載地址為: https://snapshots./components/toolchain/ 按以上4個(gè)步驟下載gcc-linaro-4.9.4-2017.01- 然后修改環(huán)境變量,執(zhí)行sudo vi /etc/profile命令打開/etc/profile文件,在文件末尾添加PATH路徑,這樣交叉編譯工具鏈就安裝成功。 最后執(zhí)行命令sudo apt-get install lsb-core lib32stdc++6安裝標(biāo)準(zhǔn)C庫, 然后讀取版本號(hào)驗(yàn)證工具鏈安裝正確。 3、 Windows下的gcc編譯器 3.1、MinGW-w64編譯器 MinGW-w64編譯器是gcc編譯器的Windows版本,MinGW 的全稱是:Minimalist GNU on Windows,它也是一個(gè)可自由使用和自由發(fā)布的Windows特定頭文件和使用GNU工具集導(dǎo)入庫的集合,它使用 Windows 的C語言運(yùn)行庫,可以將C源碼編譯成可在Windows下執(zhí)行。 進(jìn)入MinGW-w64下載最新版本的編譯器: http://www./doku.php 當(dāng)前最新版本為V.9.0.0,點(diǎn)擊Downloads下載,進(jìn)入下載頁面;MinGW-w64 的代碼和可執(zhí)行文件被托管存儲(chǔ)在 SourceForge 上,如下鏈接地址: https:///projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 往下拉找到可執(zhí)行文件MinGW-W64-install.exe,下載直接雙擊安裝,不用去編譯源代碼。 需要連接網(wǎng)絡(luò)在線安裝mingw-w64-install.exe,在進(jìn)行版本和主機(jī)架構(gòu)選擇后就會(huì)自動(dòng)下載mingw組件。 組件下載完成后,在bin目錄下包含了各種工具,如:gcc.exe,g++.exe,gdb.exe,將bin文件夾路徑添加到系統(tǒng)環(huán)境變量PATH中,至此,mingw安裝完成。 驗(yàn)證mingw編譯功能。 3.2、集成開發(fā)環(huán)境(IDE) 以上使用mingw編譯C語言采用的是命令行的形式,對(duì)于學(xué)習(xí)C語言來說是非常清晰的,但是開發(fā)項(xiàng)目時(shí)C文件數(shù)量眾多,一個(gè)個(gè)編譯顯得不現(xiàn)實(shí),因此需要編寫makefile來統(tǒng)一編譯管理,這樣就回到了Linux下的C語言編程,體現(xiàn)不出Windows桌面系統(tǒng)的優(yōu)勢(shì),因此在Windows下,許多集成開發(fā)環(huán)境(IDE)集成了MinGW編譯器,PC應(yīng)用開發(fā)的工具有QT,Code::Blocks,Dev C++ ,C-Free等,嵌入式開發(fā)的工具有MDK(KEIL),IAR等。 3.2.1、QT QT是一個(gè)跨平臺(tái)的開發(fā)環(huán)境,WINDOWS/LINUX/MAC下都可以用,同一套代碼分別在三個(gè)平臺(tái)下編譯就可生成各個(gè)平臺(tái)的應(yīng)用程序,其下載的官方網(wǎng)站如下: https://download./archive/qt/; 目前最新版本為6.1,選擇一個(gè)合適版本下載安裝,QT在安裝時(shí)可以選擇配套的MinGW版本,這樣編寫C/C++項(xiàng)目工程時(shí),一鍵編譯就很方便。 3.2.2、Code::Blocks Blocks是一個(gè)免費(fèi)的C/ c++和Fortran IDE,IDE集成了MinGW編譯器,官方下載地址如下: 下載后直接安裝即可。 3.2.3、Dev-C++ devc ++是一個(gè)免費(fèi)的Windows集成開發(fā)程序,內(nèi)嵌 GCC 編譯器(GCC 編譯器的 Windows 移植版,也就是MinGW),是 NOI、NOIP 等比賽的指定工具。Dev C++ 的優(yōu)點(diǎn)是體積?。ㄖ挥袔资祝?、安裝卸載方便、學(xué)習(xí)成本低,缺點(diǎn)是調(diào)試功能弱。 下載地址: Dev C++ 下載完成后會(huì)得到一個(gè)安裝包(.exe 程序),雙擊該文件即可開始安裝。 3.2.4、C-Free C-Free是一款集成開發(fā)環(huán)境(IDE),支持多種編譯器的專業(yè)化C/C++,使用者可以輕松地編輯、編譯、連接、運(yùn)行、調(diào)試C/C++程序。Visual Studio的很龐大臃腫,而C-Free整個(gè)軟件才14M,非常輕巧,安裝簡單,可以自由切換編譯器。C-Free最新版本是5.0,注冊(cè)需要80RMB,可以免費(fèi)試用30天,過期不注冊(cè)將無法使用。C-Free也提供了永久免費(fèi)版,可以無限使用,版本號(hào)為4.0。 官方下載地址: C-Free可配置MinGW 2.95/3.x/4.x/5.0編譯器。 3.2.5、Keil 在基于Cortex-M或8051系列MCU的嵌入式開發(fā)中,許多優(yōu)秀的IDE也都集成了交叉編譯工具,如源自德國Keil公司,開發(fā)幾個(gè)分別用于ARM系列、8051系列的集成IDE,內(nèi)部集成了編譯器(ARMCC、Keil C),這些編譯器就是集成的交叉編譯器,就是在windows下編譯,生成的可執(zhí)行程序在ARM或51內(nèi)核執(zhí)行。 官方下載地址: 3.2.6、IAR Embedded Workbench 總部在北歐的瑞典的IAR公司的集成開發(fā)環(huán)境IAR Embedded Workbench,也是專用于Cortex-M或8051系列MCU的嵌入式開發(fā)。IAR也是集成了IAR C/ C++編譯器。 官方下載地址: IAR工具有免費(fèi)30天的試用期,如果自己學(xué)習(xí)使用,可以破解。 4、 Mac下的gcc編譯器 Mac OS X 10.4版本前,Mac也是采用gcc編譯器編譯Object-C,Mac OS X 10.5版本之后,LLVM-Clang編譯器開始逐漸替代GCC編譯器成為Mac的主要編譯器,因此,后續(xù)gcc等工具默認(rèn)不再M(fèi)ac OS X系統(tǒng)中安裝,而有時(shí)在MAC OS X下編譯開源軟件項(xiàng)目可能需要gcc編譯器,因此以下提供幾個(gè)常用的gcc安裝方法(總結(jié)于其它博主的安裝方法)。 4.1、命令行工具 命令行工具作為XCODE IDE的可選軟件包,也就是Command Line Tools,為mac終端用戶提供了許多常用的工具,如實(shí)用程序和編譯器,包括svn,git,make,GCC,clang,perl,size,strip,strings,libtool,cpp,what等,因此安裝了Command Line Tools,就包含了GCC編譯器軟件,有幾個(gè)方式安裝Command Line Tools。 4.1.1、通過XCODE安裝 安裝XCODE后,默認(rèn)不安裝Command Line Tools,但是可以通過菜單可視化安裝命令行工具,如下圖所示: 4.1.2、通過Command Line Tools安裝包 XCODE軟件很大,有幾十G空間,因此可以選擇下載 Command Line Tools安裝包安裝,前提是有APPLE開發(fā)者賬號(hào),登錄開發(fā)者網(wǎng)站下載xx.mpkg安裝包 4.1.3、通過xcode-select –install命令安裝 命令xcode-select是一個(gè)在多個(gè)命令行工具目錄之間切換的實(shí)用程序,如下相關(guān)命令選項(xiàng): A、 xcode-select [-help] ;查看幫助 B、 xcode-select [-switch xcode_folder_path] ;切換xcode版本 C、 xcode-select [-print-path] ;查看當(dāng)前版本xcode路徑 D、 xcode-select [-version] ;查看xcode版本 E、 xcode-select [–install] ;安裝xcode工具 通過xcode-select –install命令安裝方法如下: 4.2、通過brew包管理工具安裝 a、安裝包管理工具,terminal終端執(zhí)行如下指令(國內(nèi)安裝源),安裝home brew: 安裝完整版: /bin/zsh -c '$(curl -fsSL https:///cunkai/HomebrewCN/raw/master/Homebrew.sh)' 安裝簡化版: /bin/zsh -c '$(curl -fsSL https:///cunkai/HomebrewCN/raw/master/Homebrew.sh)' speed 卸載腳本:
安裝錯(cuò)誤查詢地址: https:///cunkai/HomebrewCN/blob/master/error.md b、執(zhí)行指令brew install gcc安裝gcc。 c、執(zhí)行g(shù)cc –v查看版本 發(fā)現(xiàn)gcc執(zhí)行時(shí)映射到clang,因此后續(xù)調(diào)用gcc需要帶上版本號(hào),如gcc-10 –v;編譯程序也一樣:gcc-10 main.cpp -o mainApp -lstdc++。 4.3、通過gcc安裝包安裝 a、到gcc托管網(wǎng)站sourceforge上下載所需的gcc版本,如下網(wǎng)站: https:///projects/hpc/files/hpc/gcc/; b、打開terminal終端,進(jìn)入gcc-9.2-bin.tar.gz壓縮包所在的目錄,然后執(zhí)行解壓: gunzip gcc-9.2-bin.tar.gz
c、添加環(huán)境變量,打開配置文件touch ~/.bash_profile,添加PATH路徑: d、激活配置:source ~/.bash_profile,然后gcc –version查看版本信息: |
|