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 rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更