C语言作为一种高级语言,机器是无法识别的,所以需要一个编译器将其转换成机器可以识别的二进制指令。c语言出现至今已有50多年,相关编译器种类繁多,从最早的turbo c系列编译器到著名的基于LLVM的gcc和clang,各有优缺点,在很多平台(如windows、Linux、MAC)上都有广泛应用。同时由于Windows的强势存在,其自带的Visual C/C++编译器也有很多应用。
一般C语言程序都是在PC机上编写,编译成可执行文件,最后放到计算机或设备上执行。
目前主流PC的CPU架构和操作系统有多种组合,其编译生成的可执行程序可能在不同的架构下执行。因此,对于同一种编译器,CPU架构和系统组合可能需要有相应的版本。
注:2022年最新的MAC pro笔记本将采用苹果的ARM架构CPU M1。
编译器一般分为两种情况(下面的例子):
a .在X86+Windows系统下编译C程序,可以直接在X86+Windows系统的PC上执行;
b、在X86+Windows系统下,需要x86-Arm交叉编译器编译C程序才能在Arm平台设备上执行;
所以需要根据开发编译平台和目标运行平台来选择编译器类别,有些IDE集成了官方对应的C编译,安装后即可使用,比如:
1.对于Visual C/C++编译器,集成开发环境Visual Studio也集成了Visual C/C++编译器。安装Visual Studio后,可以在IDE中编辑/编译C程序。
2.对于ARM(R/M系列)和8051系列,交叉编译器环境可能已经集成在集成开发环境(IDE)中。例如,ARMCC交叉编译器已经集成在MDK KEIL中。安装MDK后,您可以在IDE中编辑/编译C程序。
C编译器有很多。下面是一些主流的C编译器!首先是著名的GCC编译器。
一. GCC编译器
GCC是(GNU Compiler Collection)的缩写,是GNU开发的一个编程语言翻译器。最初是为C语言编写的,现已扩展到C++、Objective-C、Fortran、Ja、Ada和Go,包括它们的库(如libstdc++、libgcj等。),所以GCC是一个GNU编译器套件。
Gcc编译器镜像可以从其官方FTP服务器下载,最新版本是gcc-11.2.0。
1、用于ARM的gcc
现在的手机处理器基本都是基于ARM架构,很多智能设备或者物联网设备中的嵌入式芯片的CPU内核也是基于ARM的。所以ARM公司也在不断更新维护ARM架构的跨C编译器。
ARM从1985年ARMv1芯片设计到现在的ARMv9,已经有30多年的历史了。下表显示了每种架构的典型处理器版本:
目前ARMv7和ARMv8被广泛使用;ARMv7广泛应用于智能设备芯片和微处理器MCU。比如恩智浦推出的IM6ULL用的是ARM Cortex-A7,ST推出的STM32F4用的是ARM Cortex-M4。目前流行的手机处理器基本都在Cortex-A系列ARMv8架构。比如华为P50系列的麒麟9000处理器现在用的是ARM Cortex-A77,小米11系列的骁龙888处理器用的是ARM Cortex-A78。因此,理论上,骁龙888处理器会比麒麟9000处理器更好。
ARMv9架构是ARM今年刚刚推出的全新下一代架构。首款基于Armv9架构的大核CPU Arm Cortex-A710和首款高效小核Arm Cortex-A510手机预计明年问世。
ARMv8的架构继承了之前ARMv7和之前处理器技术的基础。除了现有的16/32位Thumb2指令支持外,还兼容并扩展了现有A32 (ARM 32位)指令集的AArch32架构,增加了基于64位的AArch64架构。
基于32位ARM cortex-a、arm cortex-m和arm cortex-r处理器的GCC交叉编译工具链(基本在ARMv7架构下使用)。arm开发者网站提供下载,包括Windows、Linux、Mac OS X操作系统平台。最新版本为10.3-2021.07,下载地址为:
https://developer . arm . com/tools-and-software/开源软件/developer-tools/GNU-tool chain/GNU-RM/downloads
A.基于AArch32 (32位扩展版)和AArch64 (64位新版本)的交叉编译器(ARMv8框架下),ARM开发者网站提供下载,包括Windows、Linux、Mac OS X操作系统平台。目前最新版本为10.3-2021.07,下载地址为:
https://developer . arm . com/tools-and-software/开源软件/developer-tools/GNU-tool chain/GNU-a/downloads
2.Linux下的gcc编译器。
Linux通常带有gcc编译器。可以通过GCC–V查看其版本号,如下图:
从打印的信息“Target:x86-64-linux-gnu”中可以看到,gcc编译器默认是针对x86架构的,所以编译后的可执行文件只能在x86架构下执行;一般C程序都是在Linux下开发编译,然后在ARM下执行,所以需要安装交叉编译的C编译器。
可以在ARM官网下载最新版本,或者芯片厂商会提供相应的修改版本。同时,一些第三方机构提供了修改后的编译器版本,如Linaro GCC编译器,下载地址为:
https://snapshots.linaro.org/components/toolchain/
按照上面的四个步骤下载gcc-linaro-4 . 9 . 4-2017.01-x86 _ 64 _ arm-Linux-gnueabihf.tar的编译器,上传到ubuntu系统,复制到目录/usr/local/arm,解压交叉编译工具。解压缩命令如下:sudotar–vxfgcc-linaro-4 . 9 . 4-2017.01-x86 _ 64 _ arm-Linux-gnueabihf.tar。解压缩后会生成一个名为gcc-linaro-4 . 9 . 4-2017.01-x86 _ 64 _ arm的文件。
然后修改环境变量,执行sudo vi /etc/profile命令打开/etc/profile文件,在文件末尾添加PATH path,这样交叉编译工具链就安装成功了。
最后执行命令sudo apt-get install L-corelib 32 stdc++ 6安装标准C库,然后读取版本号验证工具链安装正确。
3.Windows下的gcc编译器。
3.1、MinGW-w64编译器
MinGW-w64编译器是gcc编译器的Windows版本。MinGW的全称是:Windows上的极简GNU。它也是一个特定于Windows的头文件的集合,可以免费使用和发布,并使用GNU工具集导入库。它使用Windows的C语言运行时,可以将C源代码编译成Windows下的可执行文件。
转到MinGW-w64下载最新版本的编译器:
http://www.mingw-w64.org/doku.php
最新版本是V.9.0.0点击下载下载,进入下载页面。MinGW-w64的代码和可执行文件存储在SourceForge中,链接地址如下:
https://SourceForge . net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
下拉找到可执行文件MinGW-W64-install.exe,下载后双击安装,无需编译源代码。
您需要连接到网络来安装mingw-w64-install.exe在线。在选择了版本和主机架构之后,mingw组件将被自动下载。
下载组件后,各种工具,如gcc.exe,g++。exe和gdb.exe包含在bin目录中,bin文件夹路径被添加到系统环境变量PATH中。至此,mingw的安装完成。
验证mingw编译功能。
3.2.集成开发环境(IDE)
上面用mingw编译C语言是命令行的形式,对于学习C语言来说非常清楚。但是在开发一个项目的时候,有大量的C文件,一个一个编译是不现实的。所以需要编写makefile来统一编译和管理,所以又回到了Linux下的C语言编程,没有体现出Windows桌面系统的优势。因此,在Windows下,许多集成开发环境(IDE)都集成了MinGW编译器。PC应用开发的工具有QT、Code::Blocks、Dev C++、C-Free等。嵌入式开发工具包括MDK(KEIL)、IAR等。
3.2.1、QT
QT是一个跨平台的开发环境,可以在WINDOWS/LINUX/MAC下使用。同一组代码可以在三个平台下编译,为每个平台生成应用程序。下载的官方网站如下:
https://download.qt.io/archive/qt/;
目前最新版本是6.1,所以选择一个合适的版本下载安装,QT在安装的时候可以选择匹配的MinGW版本,写C/C++项目工程的时候一键编译很方便。
代码::块
Blocks是一个免费的C/ c++和Fortran IDE,它集成了MinGW编译器。官方下载地址如下:https://www.codeblocks.org/downloads/.
下载后可以直接安装。
3.2.3、开发-C++
Devc ++是一个免费的Windows集成开发程序,内嵌GCC编译器(GCC编译器的Windows移植版,即MinGW),是NOI、NOIP等比赛的指定工具。Dev C++的优点是体积小(只有几十兆),安装卸载方便,学习成本低,缺点是调试功能弱。
下载地址:https://sourceforge.net/projects/orwelldevcpp/或https://bloodshed-dev-c.en.softonic.com/
下载Dev C++后,会得到一个安装包(。exe程序)。双击该文件开始安装。
不含碳
C-Free是一个集成开发环境(IDE),支持各种专业的C/C++编译器。用户可以轻松地编辑、编译、连接、运行和调试C/C++程序。Visual Studio庞大臃肿,而C-Free只有14M,非常轻量级,易于安装,可以自由切换编译器。C-Free的最新版本是5.0。注册费用为80元人民币,你可以免费试用30天。过期不注册,就不能用了。C-Free还提供了永久免费版本,可以无限期使用。版本号是4.0。
官方下载地址:https://c-free.soft32.com/.
C-Free可以配置MinGW 2.95/3.x/4.x/5.0编译器。
Keil
在基于Cortex-M或8051系列MCU的嵌入式开发中,很多优秀的ide也集成了交叉编译工具。比如来自德国的Keil公司,开发了几个针对ARM系列和8051系列的集成ide,内部集成了编译器(ARMCC,Keil C)。这些编译器是集成的交叉编译器,即在windows下编译,生成的可执行程序在ARM或51内核中执行。
官方下载地址:https://www.keil.com/download/product/.
3.2.6、IAR嵌入式工作台
IAR Embedded Workbench是总部位于北欧的瑞典IAR公司的集成开发环境,也致力于Cortex-M或8051系列MCU的嵌入式开发。IAR也是一个集成了IAR C/ C++的编译器。
官方下载地址:https://www.iar.com/products/#/search.
IAR工具有30天的免费试用期。如果你自己学会使用它们,你就能破解它们。
4.Mac下的gcc编译器。
在Mac OS X 10.4版之前,Mac也用gcc编译器编译Object-C。在Mac OS X 10.5版本之后,LLVM-Clang编译器开始逐渐取代gcc编译器成为Mac的主要编译器。所以MAC OS X系统默认不再安装gcc之类的工具,有时可能需要在MAC OS X下编译开源软件项目,所以下面是一些常见的GCC安装方法(从其他博主的安装方法总结而来)。
4.1、命令行工具
作为XCODE IDE的可选软件包,即命令行工具,命令行工具为mac终端用户提供了很多常用的工具,比如实用程序和编译器,包括svn、git、make、GCC、clang、perl、size、strip、strings、libtool、cpp、what等。所以命令行工具的安装包括GCC编译器软件,安装命令行工具有几种方法。
4.1.1.通过XCODE安装
安装XCODE后,默认不安装命令行工具,但可以通过菜单直观安装命令行工具,如下图所示:
4.1.2.通过命令行工具安装软件包。
XCODE软件很大,有几十个G空,可以选择下载安装命令行工具的安装包,前提是你有苹果开发者账号,登录开发者网站,下载xx . mpkg https://developer.apple.com/cn/.的安装包
4.1.3.通过xcode-select -install命令安装。
命令xcode-select是一个在多个命令行工具目录之间切换的实用程序,具有以下相关命令选项:
a、xcode-select[-help];查看帮助
b、xcode-select[-switch xcode _ folder _ path];切换xcode版本
c、xcode-select[-print-path];查看当前版本xcode路径
d、xcode-select[-version];查看xcode版本
e、xcode-select[–install];安装xcode工具
xcode-select -install命令的安装方法如下:
4.2、通过brew包管理工具安装
A.安装包管理工具。终端终端执行以下指令(国内安装源)来安装home brew:
安装完整版本:
/bin/zsh-c & # 34;$(curl-fsSL https://gitee . com/Cun kai/home brew cn/raw/master/home brew . sh)& # 34;
安装简化版本:
/bin/zsh-c & # 34;$(curl-fsSL https://gitee . com/Cun kai/home brew cn/raw/master/home brew . sh)& # 34;快速卸载脚本:
/bin/zsh-c & # 34;$(curl-fsSL https://gitee . com/Cun kai/home brew cn/raw/master/home brew uninstall . sh)& # 34;安装错误查询地址:
https://gitee.com/cunkai/HomebrewCN/blob/master/error.md
B.执行brew install gcc指令来安装gcc。
C.执行gcc–v来检查版本。
发现gcc在执行过程中被映射到clang,所以后续调用gcc需要带版本号,比如GCC-10–V;编译器是一样的:gcc-10 main . CPP-omain app-lstdc++。
4.3.通过gcc安装包安装
a、从gcc托管网站sourceforge下载所需的gcc版本,如下所示:
https://sourceforge.net/projects/hpc/files/hpc/gcc/;
b、打开终端terminal,进入gcc-9.2-bin.tar.gz压缩包所在的目录,然后进行解压:
gunzip gcc-9.2-bin . tar . gzsudotar-xvf gcc-9.2-bin . tarc,添加环境变量,打开配置文件touch ~/。bash_profile,并添加路径:
d、激活配置:source ~/。bash_profile,然后通过gcc -version检查版本信息: