当前位置: 首页 > news >正文

【C++】GCC对应C++的版本支持

1、查看当前GCC的版本

pf@fNUC12WSKi7:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) 

可以看到对应的gcc的版本为9.4.0

2、gcc,g++,GNU之间的关系,待补充

GCC:GNU Compiler Collection(GUN 编译器集合),最初是作为C语言的编译器(GNU C Compiler),现在可以编译C、C++、JAVA、Fortran、Pascal、Object-C、Ada等语言
gcc是GCC中的GUN
C Compiler(C 编译器) g++是GCC中的GUN C++ Compiler(C++编译器)

gcc 和 g++ 的区别无非就是调用的编译器不同, 并且传递给链接器的参数不同,更准确的说法是:gcc调用了C compiler,而g++调用了C++ compiler

g++:

g++ 会把 .c 文件当做是 C++ 语言 (在 .c 文件前后分别加上 -xc++ 和 -xnone, 强行变成 C++), 从而调用 cc1plus 进行编译
g++ 遇到 .cpp 文件也会当做是 C++, 调用 cc1plus 进行编译
g++ 还会默认告诉链接器, 让它链接上 C++ 标准库
gcc:

gcc 会把 .c 文件当做是 C 语言. 从而调用 cc1 进行编译
gcc 遇到 .cpp 文件, 会处理成 C++ 语言. 调用 cc1plus 进行编译
gcc 默认不会链接上 C++ 标准库
只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别

但如果使用 g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。也就是说,对于 .c 文件来说,gcc 指令以 C 语言代码对待,而 g++ 指令会以 C++ 代码对待。但对于 .cpp 文件来说,gcc 和 g++ 都会以 C++ 代码的方式编译

因此并不能说gcc只能编译C代码,g++只能编译C++代码

不能用gcc编译C++程序的原因是:gcc在链接时不能自动和C++程序使用的库联接,因此只能使用g++来完成链接过程

https://gcc.gnu.org/releases.html对应官网

Release	Release date
GCC 13.2	July 27, 2023
GCC 10.5	July 7, 2023
GCC 11.4	May 29, 2023
GCC 12.3	May 8, 2023
GCC 13.1	April 26, 2023
GCC 12.2	August 19, 2022
GCC 10.4	June 28, 2022
GCC 9.5	May 27, 2022
GCC 12.1	May 6, 2022
GCC 11.3	April 21, 2022
GCC 11.2	July 28, 2021
GCC 9.4	June 1, 2021
GCC 8.5	May 14, 2021
GCC 11.1	April 27, 2021
GCC 10.3	April 8, 2021
GCC 10.2	July 23, 2020
GCC 10.1	May 7, 2020
GCC 9.3	March 12, 2020
GCC 8.4	March 4, 2020
GCC 7.5	November 14, 2019
GCC 9.2	August 12, 2019
GCC 9.1	May 3, 2019
GCC 8.3	February 22, 2019
GCC 7.4	December 6, 2018
GCC 6.5	October 26, 2018
GCC 8.2	July 26, 2018
GCC 8.1	May 2, 2018
GCC 7.3	January 25, 2018
GCC 5.5	October 10, 2017
GCC 7.2	August 14, 2017
GCC 6.4	July 4, 2017
GCC 7.1	May 2, 2017
GCC 6.3	December 21, 2016
GCC 6.2	August 22, 2016
GCC 4.9.4	August 3, 2016
GCC 5.4	June 3, 2016
GCC 6.1	April 27, 2016
GCC 5.3	December 4, 2015
GCC 5.2	July 16, 2015
GCC 4.9.3	June 26, 2015
GCC 4.8.5	June 23, 2015
GCC 5.1	April 22, 2015

GCC的支持情况
GCC编译器对不同的C++标准的支持情况:

C++17
gcc7完全支持,gcc6和gcc5部分支持,gcc6支持度当然比gcc5高,gcc4及以下版本不支持。
C++14
gcc5完全支持,gcc4部分支持,gcc3及以下版本不支持。
C++11
gcc4.8.1及以上完全支持。gcc4.3部分支持,gcc4.3以下版本不支持。

对应表格:
在这里插入图片描述
引用,侵删

http://www.lryc.cn/news/140616.html

相关文章:

  • 前端面试:【算法】排序、查找、递归、动态规划
  • RK3399 开机自启一个shell脚本,一直起不来BUG
  • [MyBatis系列④]核心配置文件
  • 系统架构设计高级技能 · 层次式架构设计理论与实践
  • Nuxt3打包部署到Linux(node+pm2安装和运行步骤+nginx代理)
  • 一维数组传参
  • 七层、四层和五层网络模型区别和联系
  • RH1288V3 - 初识物理服务器
  • excel中如果A列中某项有多条记录,针对A列中相同的项,将B列值进行相加合并统计
  • 开发智能应用的新范式:大数据、AI和云原生如何构建智能软件
  • 淘宝免费爬虫数据 商品详情数据 商品销售额销量API
  • Markdown初级使用指南
  • 国际版阿里云/腾讯云CDN装备运用教程:加快网站拜访速度
  • 面试之快速学习计算机网络-http
  • 2023水果编曲软件fl studio 21.1.0 .3713官方中文直装破解版
  • 【微信小程序】页面路由跳转函数之间的区别
  • Ubuntu inotify
  • 开始MySQL之路——MySQL的DataGrip图形化界面
  • C++ STL 标准模板库
  • C#-集合小例子
  • git保存删除的文件
  • 【golang】go语句执行规则(goroutine)(下)
  • websocket 接收消息无法获取用户id
  • springboot通过sharding-dbc按年、月分片
  • 基于静电放电算法优化的BP神经网络(预测应用) - 附代码
  • 开发者插件推荐FeHelper
  • 【MySQL】JSON 格式字段处理
  • 数据库选型<1>
  • 1.Flink源码编译
  • Linux内核数据结构 散列表