您的位置 首页 java

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,下载地址:

A、 基于AArch32(扩充版32位)与AArch64(新增64位)的交叉编译器(ARMv8架构下),ARM开发者网站提供了下载,包含Windows, Linux, Mac OS X操作系统平台,目前最新版本为10.3-2021.07,下载地址:

2、 Linux下gcc编译器

Linux一般自带gcc编译器,可以通过gcc –v查看其版本号,如下图:

从打印信息中 “Target:x86-64-linux-gnu”,可以看出默认的gcc编译器是针对x86架构的,因此编译得出的可执行文件只能在x86架构下执行;而一般情况是在Linux下开发编译C程序,然后在ARM下执行,因此需要安装交叉编译C编译器。

在ARM官网上可以下载最新版本,或芯片厂家会提供对应修改过的版本,同时有些第三方组织提供修改过的编译器版本,如 Linaro GCC编译器,下载地址为:

按以上4个步骤下载gcc-linaro-4.9.4-2017.01- x86_64_arm-linux-gnueabihf.tar版本编译器,并上传至ubuntu系统中,拷贝到目录/usr/local/arm中对交叉编译工具进行解压,解压命令如下:sudo tar –vxf gcc-linaro-4.9.4-2017.01- x86_64_arm-linux-gnueabihf.tar,解压完成会生成一个名为gcc-linaro-4.9.4-2017.01- x86_64_arm-linux-gnueabihf的文件夹就是交叉编译工具链。

然后修改环境变量,执行sudo vi /etc/profile命令打开/etc/profile文件,在文件末尾添加PATH路径,这样交叉编译工具链就安装成功。

最后执行命令sudo apt-get install lsb -core lib32stdc++6安装标准C库, 然后读取版本号验证工具链安装正确。

3、 Windows下的gcc编译器

3.1、MinGW-w64编译器

MinGW-w64编译器是gcc编译器的Windows版本, MinGW 的全称是:Minimalist GNU on Windows,它也是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,它使用 Windows 的C语言运行库,可以将C源码编译成可在Windows下执行。

进入MinGW-w64下载最新版本的编译器:

mingw -w64.org/doku.php

当前最新版本为V.9.0.0,点击Downloads下载,进入下载页面;MinGW-w64 的代码和可执行文件被托管存储在 SourceForge 上,如下链接地址:

往下拉找到可执行文件MinGW-W64-install.exe,下载直接双击安装,不用去编译源代码。

需要连接网络在线安装mingw-w64-install.exe,在进行版本和主机架构选择后就会自动下载mingw组件。

组件下载完成后,在 bin 目录下包含了各种工具,如:gcc.exe,g++.exe,gdb.exe,将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下都可以用,同一套代码分别在三个平台下编译就可生成各个平台的应用程序,其下载的官方网站如下:

目前最新版本为6.1,选择一个合适版本下载安装,QT在安装时可以选择配套的MinGW版本,这样编写C/C++项目工程时,一键编译就很方便。

3.2.2、Code::Blocks

Blocks是一个免费的C/ c++和Fortran IDE,IDE集成了MinGW编译器,官方下载地址如下:。

下载后直接安装即可。

3.2.3、Dev-C++

devc ++是一个免费的Windows集成开发程序,内嵌 GCC 编译器(GCC 编译器的 Windows 移植版,也就是MinGW),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。

下载地址:

Dev C++ 下载完成后会得到一个安装包(.exe 程序),双击该文件即可开始安装。

3.2.4、 C-Free

C-Free是一款集成开发环境(IDE),支持多种编译器的专业化C/C++,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。Visual Studio的很庞大臃肿,而C-Free整个软件才14M,非常轻巧,安装简单,可以自由切换编译器。C-Free最新版本是5.0,注册需要80RMB,可以免费试用30天,过期不注册将无法使用。C-Free也提供了永久免费版,可以无限使用,版本号为4.0。

官方下载地址:

C-Free可配置MinGW 2.95/3.x/4.x/5.0编译器。

3.2.5、Keil

在基于Cortex-M或8051系列MCU的嵌入式开发中,许多优秀的IDE也都集成了交叉编译工具,如源自德国Keil公司,开发几个分别用于ARM系列、8051系列的集成IDE,内部集成了编译器(ARMCC、Keil C),这些编译器就是集成的交叉编译器,就是在windows下编译,生成的可执行程序在ARM或51内核执行。

官方下载地址:

3.2.6、IAR Embedded Workbench

总部在北欧的 瑞典 的IAR公司的集成开发环境IAR Embedded Workbench,也是专用于Cortex-M或8051系列MCU的嵌入式开发。IAR也是集成了IAR C/ C++编译器。

官方下载地址:#/search

IAR工具有免费30天的试用期,如果自己学习使用,可以破解。

4、 Mac下的gcc编译器

Mac OS X 10.4版本前,Mac也是采用gcc编译器编译Object-C,Mac OS X 10.5版本之后,LLVM-Clang编译器开始逐渐替代GCC编译器成为Mac的主要编译器,因此,后续gcc等工具默认不再Mac OS X系统中安装,而有时在MAC OS X下编译开源软件项目可能需要gcc编译器,因此以下提供几个常用的gcc安装方法( 总结于其它博主的安装方法 )。

4.1、命令行工具

命令行工具作为 xcode IDE的可选软件包,也就是Command Line Tools,为mac终端用户提供了许多常用的工具,如实用程序和编译器,包括svn,git,make,GCC,clang,perl,size,strip,strings,libtool,cpp,what等,因此安装了Command Line Tools,就包含了GCC编译器软件,有几个方式安装Command Line Tools。

4.1.1、通过XCODE安装

安装XCODE后,默认不安装Command Line Tools,但是可以通过菜单可视化安装命令行工具,如下图所示:

4.1.2、通过Command Line Tools安装包

XCODE软件很大,有几十G空间,因此可以选择下载 Command Line Tools安装包安装,前提是有APPLE开发者账号,登录开发者网站下载xx.mpkg安装包,

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、安装包管理工具, terminal 终端执行如下指令(国内安装源),安装home brew:

安装完整版:

/bin/zsh -c “$(curl -fsSL )”

安装简化版:

 /bin/zsh -c "$(curl -fsSL #34; speed  

卸载脚本:

 /bin/zsh -c "$(curl -fsSL #34;  

安装错误查询地址:

b、执行指令brew install gcc安装gcc。

c、执行gcc –v查看版本

发现gcc执行时映射到clang,因此后续调用gcc需要带上版本号,如gcc-10 –v;编译程序也一样:gcc-10 main.cpp -o mainApp -lstdc++。

4.3、通过gcc安装包安装

a、到gcc托管网站sourceforge上下载所需的gcc版本,如下网站:

b、打开terminal终端,进入gcc-9.2-bin.tar.gz压缩包所在的目录,然后执行解压:

  gunzip  gcc-9.2-bin.tar.gz  
 sudo tar -xvf gcc-9.2-bin.tar  

c、 添加环境变量,打开配置文件touch ~/.bash_profile,添加PATH路径:

d、激活配置:source ~/.bash_profile,然后gcc –version查看版本信息:

文章来源:智云一二三科技

文章标题:C语言编译器之一,GCC

文章地址:https://www.zhihuclub.com/183559.shtml

关于作者: 智云科技

热门文章

评论已关闭

104条评论

  1. Beneficial write ups. Thanks a lot!
    how to write an abstract for an essay how to write a convincing essay

  2. Really plenty of valuable tips!
    essay on things i like to do during my pastime pro essay writers

  3. You made your point pretty well..
    pa borgata online casino [url=https://bestonlinecasinoreal.us/]best online casino game[/url] virgin casino online

  4. Seriously a good deal of useful facts.
    custom paper writing service what is the best paper writing service

  5. You actually reported that fantastically!
    cheap research paper writing service buy a paper for college

  6. Amazing all kinds of wonderful tips.
    how to write a reaction paper write my paper for cheap

  7. Seriously quite a lot of useful advice.
    essay writing service uk forum assignment writing service

  8. Truly plenty of useful information!
    writing a personal essay write my paper for me free

  9. Very good forum posts. Kudos!
    graduate paper writing service best college paper writing service

  10. You actually suggested it exceptionally well!
    buy a research paper elements of a research proposal

  11. Reliable material. Appreciate it.
    how to write an abstract for a research paper write my paper

  12. Amazing a good deal of amazing tips!
    paper writing service reviews writing essays service

  13. Really all kinds of excellent data.
    what should i write my college essay about write my essays online

  14. You actually reported that terrifically!
    essay writing service reviews college essay writing service

  15. Superb posts. With thanks!
    writing a thesis thesis statment
    reddit do my homework my homework
    dissertation phrases

  16. Truly tons of excellent info.
    essay writer review best essay writers
    write a essay essay writers
    what is college essay

  17. Thanks! Ample knowledge!
    how to write a conclusion for a research paper write my paper for cheap

  18. Incredible all kinds of beneficial knowledge!
    best assignment writing service custom writing service

  19. You actually reported this very well.
    cpm homework reddit do my homework
    write a paper for me essay writter
    essay outline help

  20. Thank you. Fantastic stuff!
    writing service essay article writing service
    essaypro help essay
    dissertation topic

  21. Fine postings. Many thanks.
    phd thesis database good thesis statement
    thesis statements research thesis
    dissertation search

  22. You actually reported it wonderfully!
    best online essay writing services reviews biology essay writing service
    top rated essay writing service essay writing site
    how to write a essay

  23. Thanks a lot. Terrific information.
    how to write an analysis paper how to write a reflective paper

  24. Info clearly used..
    write my research paper research paper writers
    essay writers service writing a college admission essay
    creative college essays

  25. This is nicely expressed! !
    how to write a philosophy paper website that writes papers for you
    define thesis thesis statment
    essay on social service

  26. You definitely made your point!
    dissertations phd dissertation help
    write essay write my paper for me free
    doctoral dissertation writing help

  27. Really a good deal of beneficial info.
    college term papers research paper helper
    custom writing service essay paper writing services
    dissertation abstract international

  28. Seriously a good deal of wonderful facts!
    pay for research paper paper writing service reviews

  29. You explained that exceptionally well.
    online essay writers website that writes essays for you

  30. You have made the point!
    writing a thesis statement thesis creator
    cpm homework help cpm homework
    type of essay writing

  31. You said it perfectly.!
    essay writting scholarship essay writing service
    best essay writers essay writer no plagiarism
    dissertations & theses

  32. You actually stated it well!
    dissertation assistance dissertations
    essay writter how to write an abstract for a research paper
    content writing services

  33. Nicely put. Thanks!
    who can write my essay do my essay free
    paper writing service cheap research paper writing service
    custom essay writing service

网站地图