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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。