C语言编译器之一,GCC

C语言作为高级语言,用其编写的程序指令机器并不能识别,因此需要有一个编译器将其转换为机器可识别的二进制指令 。C语言已经出现50多年的时间,其相关的编译器种类众多,从最早先的turbo c系列编译器,到大名鼎鼎的gcc,还有基于LLVM的clang,各有优劣,而且在多个平台(如windows、linux、mac)上都广泛使用 。同时由于Windows的强势存在,其自家的Visual C/C++编译器也有不少的应用 。
一般C语言程序是在PC上编写,并将其编译成可执行文件,最终放到电脑或设备上去执行 。

C语言编译器之一,GCC

文章插图
 
现在主流PC的CPU架构+操作系统组合有多种,其编译生成的可执行程序可能在不同的架构下执行,因此对于同一类编译器,可能需要针对CPU架构和系统组合也要有相应的版本 。
C语言编译器之一,GCC

文章插图
 
注:苹果自研的ARM架构CPU M1将会在2022年用于最新的MAC pro笔记本中 。
编译程序一般分为两种情况(如下举例):
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)中可能已经集成了交叉编译器环境,如MDK KEIL中已经集成了ARMCC交叉编译器,安装MDK后,就可以在IDE中编辑/编译C程序 。
C编译器很多,以下分别介绍当前主流的几个C编译器!首先是大名鼎鼎的GCC编译器 。
C语言编译器之一,GCC

文章插图
 
一、GCC编译器
GCC是(GNU Compiler Collection)的缩写,是由GNU开发的编程语言译器 。最初是为C语言而编写,后面陆陆续续扩充了C++、 Objective-C、 Fortran、JAVA、Ada和Go语言,也包括了这些语言的库(如libstdc++,libgcj等),因此GCC是GNU编译器套件 。
Gcc编译器镜像在其官方FTP服务器上可以下载,目前最新版本为gcc-11.2.0 。
C语言编译器之一,GCC

文章插图
 

C语言编译器之一,GCC

文章插图
 
1、 gcc for ARM
当今移动端手机处理器基本上是基于ARM架构,而许多智能设备或物联网设备内置芯片的CPU内核也是基于ARM,因此,ARM公司也不断更新维护针对ARM架构的交叉c编译器 。
ARM从1985年设计的ARMv1芯片,到现在ARMv9,已经有30几年的历史,各个架构典型的处理器版本如下表所示:
C语言编译器之一,GCC

文章插图
 
目前广泛使用的是ARMv7、ARMv8;ARMv7在智能设备芯片、微处理器MCU上应用比较多,比如NXP推出的IM6ULL采用ARM Cortex-A7,ST推出的STM32F4采用ARM Cortex-M4内核;而目前流行的手机处理器,基本都是ARMv8架构中的Cortex-A系列中,比如现在华为P50系列的麒麟9000处理器就是采用ARM Cortex-A77,小米11系列的骁龙888处理器采用ARM Cortex-A78,因此,理论上骁龙888比麒麟9000处理器会强一些 。
ARMv9架构是ARM今年刚推出的全新的下一代架构,首款基于Armv9架构的大核CPU Arm Cortex-A710以及首款高效率小核Arm Cortex-A510的手机,估计明年会到来 。
C语言编译器之一,GCC

文章插图
 
ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容和扩充了现有A32(ARM 32bit)指令集的AArch32架构 ,新增了基于64bit的AArch64架构;
C语言编译器之一,GCC

文章插图
 
 
A、 基于32位Arm Cortex-A, Arm Cortex-M, and Arm Cortex-R处理器的GCC交叉编译工具链(基本上ARMv7架构下使用),ARM开发者网站提供了下载,包含Windows, Linux, Mac OS X操作系统平台,目前最新版本为10.3-2021.07,下载地址:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
C语言编译器之一,GCC

文章插图
 


推荐阅读