Linux GCC G++:各个版本发行年份及新增特性盘点

2024-06-20 07:20

本文主要是介绍Linux GCC G++:各个版本发行年份及新增特性盘点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

GCC盘点

GCC 4.0

GCC 4.1

GCC 4.2

GCC 4.3

GCC 4.4

GCC 4.5

GCC 4.6

GCC 4.7

GCC 4.8

GCC 4.9

GCC 5.0

GCC 6.0

GCC 7.0

GCC 8.0

GCC 9.0

GCC 10.0

GCC 11.0

GCC 12.0

GCC 13.0

GCC稳定版本

GCC 4.8

GCC 4.9

GCC 5.0

GCC 6.0

GCC 7.0

GCC 8.0

GCC 9.0

GCC 10.0

G++盘点

1. G++ 1.x 系列

2. G++ 2.x 系列

3. G++ 3.x 系列

4. G++ 4.x 系列

5. G++ 5.x 系列

6. G++ 6.x 系列

7. G++ 7.x 系列

8. G++ 8.x 系列

9. G++ 9.x 系列

10. G++ 10.x 系列

11. G++ 11.x 系列

12. G++ 12.x 系列

13. G++ 13.x 系列

GCC

概述

特点

G++

概述

特点

区别


GCC(GNU Compiler Collection)的版本和发布年份信息如下:

GCC盘点

1.01987
1.11988
1.21988
1.31989
1.41989
1.51990
2.01992
2.11992
2.21992
2.31993
2.41994
2.51993
2.61994
2.71995
2.81997
2.91998
3.02001
3.12002
3.22002
3.32003
3.42004
4.02005
4.12006
4.22007
4.32008
4.42009
4.52010
4.62011
4.72012
4.82013
4.92014
5.02015
6.02016
7.02017
8.02018
9.02019
10.02020
11.02021
12.02022
13.02023

GCC 4.0

发布年份:2005

  • 优化:引入新的优化框架,包括 SSA (Static Single Assignment) 和新的优化器。
  • 前端:改进了 C++ 和 Fortran 前端的支持。
  • 目标平台:新增对 x86-64 和其他架构的支持。

GCC 4.1

发布年份:2006

  • 优化:增强了自动矢量化 (auto-vectorization) 支持。
  • 警告:改进了警告和错误信息,使其更清晰。
  • C++ 支持:引入了对部分 C++0x 特性的实验性支持。

GCC 4.2

发布年份:2007

  • 并行编程:支持 OpenMP 2.5 标准,增强多线程支持。
  • 警告:增加了更多的警告选项和更好的诊断信息。
  • 语言支持:改进了对 C99 和 C++ 标准的支持。

GCC 4.3

发布年份:2008

  • 优化:新增 IPA (Inter-Procedural Analysis) 优化技术。
  • 警告:新增 -Wconversion 和 -Wstrict-overflow 警告。
  • 语言支持:增强了对 Fortran 2003 的支持。

GCC 4.4

发布年份:2009

  • 优化:改进了 LTO (Link-Time Optimization) 支持。
  • 语言支持:新增对 C++0x 和 Fortran 2008 特性的支持。
  • 目标平台:改进了对 ARM 和 x86-64 平台的支持。

GCC 4.5

发布年份:2010

  • 优化:进一步改进了 LTO 和并行编译支持。
  • 诊断信息:改进了错误和警告信息的可读性。
  • 插件:引入插件机制,允许开发者扩展编译器功能。

GCC 4.6

发布年份:2011

  • 优化:改进了自动矢量化和优化器的性能。
  • 语言支持:增强了对 C++11 标准的支持。
  • 目标平台:新增对多种嵌入式平台的支持。

GCC 4.7

发布年份:2012

  • 优化:引入了更多的高层次优化。
  • 语言支持:全面支持 C++11 标准,改进了 Fortran 2003 和 2008 支持。
  • 目标平台:增强了对 ARM 和 PowerPC 平台的支持。

GCC 4.8

发布年份:2013

  • 优化:引入了新的优化技术,如 GIMPLE SSA。
  • 警告:改进了警告机制,新增了一些新的警告选项。
  • 语言支持:进一步增强了 C++11 支持,新增部分 C++14 特性。

GCC 4.9

发布年份:2014

  • 优化:改进了自动矢量化和并行编译技术。
  • 语言支持:引入了更多的 C++14 特性,改进了 Fortran 和 Go 语言支持。
  • 目标平台:增强了对多种嵌入式平台和架构的支持。

GCC 5.0

发布年份:2015

  • 版本编号:从 5.0 开始,版本编号策略发生了变化。
  • 语言支持:全面支持 C++14,开始支持 C++17 的部分特性。
  • 目标平台:增强了对 ARM、AArch64 和其他嵌入式平台的支持。

GCC 6.0

发布年份:2016

  • 优化:引入更多的高层次优化技术,改进 LTO。
  • 语言支持:增加对 C++17 的部分支持,改进 Fortran 2003 和 2008 的支持。
  • 诊断信息:进一步改进了错误和警告信息的可读性。

GCC 7.0

发布年份:2017

  • 优化:改进了自动矢量化和并行编译支持。
  • 语言支持:增加对 C++17 的全面支持。
  • 目标平台:增强了对多种架构和嵌入式平台的支持。

GCC 8.0

发布年份:2018

  • 优化:引入更多的优化技术,如改进的 IPA 和 GIMPLE 优化。
  • 语言支持:进一步增强了对 C++17 和 C++20 的部分特性支持。
  • 诊断信息:改进了错误和警告信息,使其更详细。

GCC 9.0

发布年份:2019

  • 优化:改进了 LTO 和自动矢量化支持。
  • 语言支持:增强了对 C++20 特性的支持。
  • 目标平台:进一步增强了对 ARM 和 RISC-V 平台的支持。

GCC 10.0

发布年份:2020

  • 优化:进一步改进了高层次优化和并行编译技术。
  • 语言支持:引入了更多的 C++20 特性,改进了 Fortran 和 Go 语言支持。
  • 诊断信息:进一步改进了错误和警告信息的可读性。

GCC 11.0

发布年份:2021

  • 优化:引入更多的自动矢量化和并行编译技术。
  • 语言支持:增强了对 C++20 的全面支持。
  • 目标平台:进一步增强了对多种嵌入式平台和架构的支持。

GCC 12.0

发布年份:2022

  • 优化:改进了 LTO 和其他高层次优化技术。
  • 语言支持:引入了部分 C++23 特性,改进了 Fortran 和 Go 语言支持。
  • 目标平台:增强了对 ARM、RISC-V 和其他平台的支持。

GCC 13.0

发布年份:2023

  • 优化:引入了更多的优化技术,如改进的 GIMPLE 和 SSA 优化。
  • 语言支持:进一步增强了对 C++23 和 C++26 的部分特性支持。
  • 诊断信息:改进了错误和警告信息,使其更详细和可读。

这些改动和新增功能展示了 GCC 的持续发展和改进,为开发者提供了更强大的编译器工具链,支持更多的编程语言特性和优化技术。

GCC稳定版本

GCC 4.8

发布时间:2013

  • 稳定性:经过多年的更新和修复,该版本被认为非常稳定。
  • 广泛支持:支持多种架构,包括 x86、ARM 和 PowerPC。
  • C++11 支持:全面支持 C++11 标准,许多项目在这一时期转向使用 C++11。
  • 广泛采用:许多 Linux 发行版如 Ubuntu 14.04 LTS 默认使用这个版本,增加了其普及度。

GCC 4.9

发布时间:2014

  • 优化改进:改进了自动矢量化和并行编译技术。
  • C++14 支持:引入了对部分 C++14 特性的支持,增强了对现代 C++ 特性的兼容性。
  • Fortran 和 Go 改进:提高了对 Fortran 和 Go 编程语言的支持。
  • Linux 发行版采用:被许多主流 Linux 发行版如 Debian 8 和 Ubuntu 15.04 采用,进一步推广了该版本的使用。

GCC 5.0

发布时间:2015

  • 重大改进:包括新版本编号策略和多个新特性。
  • C++14 和 C++17 支持:全面支持 C++14,并开始支持 C++17 的部分特性。
  • 广泛支持:被许多开发者和项目采用,特别是在需要现代 C++ 特性时。
  • Linux 发行版采用:被广泛应用于多个 Linux 发行版如 Fedora 22 和 Ubuntu 15.10,推动了其普及。

GCC 6.0

发布时间:2016

  • 优化改进:引入更多高层次优化技术,改进 LTO。
  • C++17 支持:增加了对 C++17 的部分支持,吸引了希望使用最新 C++ 特性的开发者。
  • 广泛采用:被许多 Linux 发行版如 Debian 9 和 Ubuntu 16.04 LTS 采用,增加了其用户基础。

GCC 7.0

发布时间:2017

  • 全面支持 C++17:完整支持 C++17 标准,为使用最新 C++ 特性的项目提供支持。
  • 优化改进:改进了自动矢量化和并行编译技术,提升了编译性能。
  • 目标平台:增强了对多种架构和嵌入式平台的支持。
  • 广泛采用:被 Fedora 26 和 Ubuntu 17.04 等发行版采用,增加了其普及度。

GCC 8.0

发布时间:2018

  • 优化改进:引入更多的优化技术,如改进的 GIMPLE SSA。
  • C++20 支持:开始支持 C++20 的部分特性,吸引了希望使用最新标准的开发者。
  • 广泛采用:被 Debian 10 和 Ubuntu 18.04 LTS 等主流发行版采用,推动了其广泛使用。

GCC 9.0

发布时间:2019

  • 优化和 LTO 改进:进一步改进了 LTO 和自动矢量化支持。
  • C++20 支持:增加了对 C++20 特性的支持,吸引了现代 C++ 项目。
  • 广泛采用:被 Fedora 30 和 Ubuntu 19.04 等发行版采用,提升了其用户基础。

GCC 10.0

发布时间:2020

  • 全面支持 C++20:为 C++20 标准提供全面支持。
  • 优化技术:引入了更多的高层次优化和并行编译技术。
  • 广泛采用:被 Debian 11 和 Ubuntu 20.04 LTS 等主流发行版采用,增加了其普及度。

这些版本被广泛使用的原因通常包括:

  1. 稳定性:在发布后经过多次修复和更新,变得非常稳定。
  2. 新特性支持:支持新的编程语言标准(如 C++11、C++14、C++17 和 C++20),吸引了希望使用新特性的开发者。
  3. 优化性能:引入了许多新的优化技术,提高了编译和运行时性能。
  4. 广泛采纳:被主流 Linux 发行版采纳和默认使用,推动了其普及。
  5. 兼容性:支持多种架构和平台,适应广泛的开发需求。

G++盘点

1. G++ 1.x 系列

  • G++ 1.0 (1987 年 3 月)
    • 特点:首个 G++ 版本,支持基本的 C++ 语言功能。

2. G++ 2.x 系列

  • G++ 2.0 (1992 年)
    • 特点:大幅提升了 C++ 的标准支持,开始支持 C++98 标准的一些特性。
  • G++ 2.95 (1999 年 7 月)
    • 特点:引入了对 ISO C++ 标准(C++98)的初步支持,并改进了模板的处理。

3. G++ 3.x 系列

  • G++ 3.0 (2001 年 6 月)
    • 特点:改进了优化器,支持更多的 ISO C++ 标准特性。
  • G++ 3.4 (2004 年 4 月)
    • 特点:更好地支持了模板元编程,提高了编译器的性能和稳定性。

4. G++ 4.x 系列

  • G++ 4.0 (2005 年 4 月)
    • 特点:引入了新的优化框架 Tree-SSA,改进了编译器的优化能力。
  • G++ 4.7 (2012 年 3 月)
    • 特点:开始部分支持 C++11 标准,如 lambda 表达式和基于范围的 for 循环。
  • G++ 4.8 (2013 年 3 月)
    • 特点:大幅度支持 C++11 标准,大部分新特性都得到了实现。

5. G++ 5.x 系列

  • G++ 5.1 (2015 年 4 月)
    • 特点:开始部分支持 C++14 标准,改进了诊断信息和错误消息。
  • G++ 5.3 (2015 年 12 月)
    • 特点:更全面地支持 C++14 标准,提升了编译器的稳定性和性能。

6. G++ 6.x 系列

  • G++ 6.1 (2016 年 4 月)
    • 特点:开始部分支持 C++17 标准,引入了许多新的编译器警告和优化。
  • G++ 6.3 (2016 年 12 月)
    • 特点:改进了对 C++17 特性的支持,修复了许多错误。

7. G++ 7.x 系列

  • G++ 7.1 (2017 年 5 月)
    • 特点:更好地支持了 C++17 标准,引入了更多的优化选项和警告。
  • G++ 7.3 (2018 年 1 月)
    • 特点:进一步改进了对 C++17 的支持,提升了编译器的性能和稳定性。

8. G++ 8.x 系列

  • G++ 8.1 (2018 年 5 月)
    • 特点:全面支持 C++17 标准,开始实验性支持 C++20 特性。
  • G++ 8.3 (2019 年 2 月)
    • 特点:修复了许多错误,进一步改进了对 C++17 和 C++20 特性的支持。

9. G++ 9.x 系列

  • G++ 9.1 (2019 年 5 月)
    • 特点:继续改进对 C++20 标准的实验性支持,引入了更多的优化和警告。
  • G++ 9.3 (2020 年 3 月)
    • 特点:修复了多个问题,增强了编译器的稳定性。

10. G++ 10.x 系列

  • G++ 10.1 (2020 年 5 月)
    • 特点:更好地支持 C++20 标准,增强了优化选项和警告信息。
  • G++ 10.2 (2020 年 7 月)
    • 特点:改进了稳定性,修复了多个错误,进一步优化了性能。

11. G++ 11.x 系列

  • G++ 11.1 (2021 年 4 月)
    • 特点:全面支持 C++20 标准,引入了对部分 C++23 特性的实验性支持。
  • G++ 11.2 (2021 年 7 月)
    • 特点:修复了许多问题,进一步增强了编译器的稳定性和性能。

12. G++ 12.x 系列

  • G++ 12.1 (2022 年 5 月)
    • 特点:开始实验性支持 C++23 特性,增强了警告和诊断信息。
  • G++ 12.2 (2022 年 8 月)
    • 特点:进一步优化了性能,修复了多个错误,增强了对 C++23 的实验性支持。

13. G++ 13.x 系列

  • G++ 13.1 (2023 年 5 月)
    • 特点:继续增强对 C++23 特性的支持,改进了编译器的优化能力和诊断信息。
  • G++ 13.2 (2023 年 8 月)
    • 特点:修复了若干错误,进一步提升了编译器的稳定性和性能。

GCC

概述

  • 全称:GNU Compiler Collection
  • 主要功能:GCC 是一个编译器套件,支持多种编程语言,包括 C、C++、Fortran、Ada、Go 等。
  • 命令行工具gcc

特点

  • 多语言支持:不仅支持 C 和 C++,还支持多种其他编程语言。
  • 多平台支持:可用于编译不同架构和操作系统上的程序。
  • 编译器优化:提供多种优化选项,提高生成代码的性能。
  • 诊断和调试:提供丰富的诊断和调试信息。

G++

概述

  • 全称:GNU C++ Compiler
  • 主要功能:G++ 是 GCC 的一个前端,用于编译 C++ 程序。
  • 命令行工具g++

特点

  • C++ 特化:专门针对 C++ 编译进行优化和支持。
  • 自动链接 C++ 库:在编译过程中自动链接 C++ 标准库。
  • C++ 语法和功能支持:全面支持 C++ 标准(如 C++98、C++03、C++11、C++14、C++17、C++20 等)。

区别

  • GCC 是一个多语言编译器套件,支持多种编程语言,包括 C 和 C++。它适用于需要编译不同语言程序的场景。
  • G++ 是专门用于编译 C++ 程序的编译器,自动处理 C++ 相关的编译和链接步骤,简化了 C++ 程序的编译过程。

如何选择二者

使用 gcc 的情况:

  1. 纯C语言项目:如果你的项目是用C语言编写的,使用 gcc 更加合适,因为它是GNU编译器集合中专门为编译C语言代码设计的编译器。
  2. C文件:当你编译的源文件是 .c 文件时,使用 gcc 是标准做法。
  3. 混合语言项目:在需要混合编译C和其他语言(如汇编语言)时,可以通过 gcc 进行适当的调用和链接。

使用 g++ 的情况:

  1. C++语言项目:如果你的项目是用C++语言编写的,使用 g++ 更为适合,因为它是GNU编译器集合中专门为编译C++语言代码设计的编译器。
  2. C++文件:当你编译的源文件是 .cpp.cxx.cc 等文件时,使用 g++ 是标准做法。
  3. 标准库链接g++ 会自动链接C++标准库(如 libstdc++),而 gcc 不会。如果你使用 gcc 来编译C++代码,需要手动链接C++标准库,通常这不是最佳实践。
  4. 模板和C++特性:C++代码中的模板和其他特定特性需要 g++ 才能正确处理。使用 gcc 可能会遇到编译错误或链接问题。

这篇关于Linux GCC G++:各个版本发行年份及新增特性盘点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077466

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命