文章目录
1.1 GCC简史和简介
1.1.1 GCC简述
最初的GNU C编译器(GCC)是由GNU项目的创始人Richard Stallman开发的。Richard Stallman于1984年创建了GNU项目,以创建一个完整的类Unix操作系统作为自由软件,以促进计算机用户和程序员之间的自由和合作。
GCC,以前用于“ GNU C编译器 ”,已经不断发展,支持多种语言,如C(gcc),C ++(g++),Objective-C,Objective-C ++,Java(gcj),Fortran(gfortran),Ada(gnat),Go(gccgo),OpenMP,Cilk Plus和OpenAcc。它现在被称为“ GNU编译器集合 ”。海湾合作委员会的母址是http://gcc.gnu.org/。目前的版本是GCC 7.3,发布于2018-01-25。
GCC是所谓的“ GNU工具链 ” 的关键组件,用于开发应用程序和编写操作系统。
1.1.2 GNU工具链包括
GNU编译器集合(GCC):支持多种语言的编译器套件,例如C / C ++和Objective-C / C ++。
GNU Make:用于编译和构建应用程序的自动化工具。
GNU Binutils:一套二进制实用工具,包括链接器和汇编器。
GNU调试器(GDB)。
GNU Autotools:一个构建系统,包括Autoconf,Autoheader,Automake和Libtool。
GNU Bison:一个解析器生成器(类似于lex和yacc)。
GCC是可移植的,可在许多操作平台上运行。GCC(和GNU工具链)目前在所有Unix上都可用。它们也被移植到Windows(由Cygwin,MinGW和MinGW-W64)。GCC也是一个交叉编译器,用于在不同平台上生成可执行文件。
1.1.3 GCC版本
各种GCC版本是:
GCC版本1(1987):支持C的初始版本
GCC第2版(1992):支持C ++。
GCC版本3(2001):结合ECGS(实验GNU编译器系统),改进优化。
GCC第4版(2005年):
海湾合作委员会第5版(2015年):
GCC第6版(2016年):
GCC第7版(2017年):
1.1.3 C ++标准支持
有各种C ++标准:
C ++ 98
C ++ 11(又名C ++ 0x)
C ++ 14(又名C ++ 1y)
C ++ 17(又名C ++ 1z)
C ++ 2a(2020年下一个计划标准)
默认模式是C ++ 98(适用于6.1之前的GCC版本)和C ++ 14(适用于GCC 6.1及更高版本)。
1.1.3 指定C++标准
您可以使用命令行标志-std显式指定C ++标准。例如,
-std=c++98,或-std=gnu++98(带有GNU扩展的C ++ 98)
-std=c++11,或-std=gnu++11(带有GNU扩展的C ++ 11)
-std=c++14,或-std=gnu++14(带有GNU扩展的C ++ 14),GCC 6.1及更高版本的默认模式。
-std=c++17或者-std=gnu++17(带有GNU扩展的C ++ 17),实验性的。
-std=c++2a,或-std=gnu++2a(带有GNU扩展的C ++ 2a),实验性的。
1.2 GCC 编译器选项
- -o:指定输出可执行文件名。
- -Wall:输出所有的debug信息。
- -g:生成debug信息(generates additional symbolic debuggging infor