谈到 GCC
,就不得不提 GNU
计划。GNU
全称 GNU’s Not UNIX,又被称为“革奴计划”,由理查德·斯托曼于 1983 年发起。GNU
计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU
操作系统。
在 Linux
内核的基础上,GNU
计划开发了很多系统部件,GCC
就是其中之一(除此之外,还有 Emacs 等非常实用的软件)。
早期 GCC
的全拼为 GNU C Compiler
,即 GUN
计划诞生的 C
语言编译器,显然最初 GCC
的定位确实只用于编译 C
语言。但经过这些年不断的迭代,GCC
的功能得到了很大的扩展,它不仅可以用来编译 C
语言程序,还可以处理 C++
、Go
、Objective -C
等多种编译语言编写的程序。
与此同时,由于之前的 GNU C Compiler
已经无法完美诠释 GCC
的含义,所以其英文全称被重新定义为 GNU Compiler Collection
,即 GNU
编译器套件。
所谓编译器,可以简单地将其理解为“翻译器”。要知道,计算机只认识二进制指令(仅有 0 和 1 组成的指令),我们日常编写的 C 语言代码、C++ 代码、Go 代码等,计算机根本无法识别,只有将程序中的每条语句翻译成对应的二进制指令,计算机才能执行。
作为一款最受欢迎的编译器,GCC
被移植到数以千计的硬件/软件平台上,几乎所有的 Linux
发行版也都默认安装有 GCC
编译器。
由于 Linux
操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux
操作系统,如 CentOS
、Ubuntu
、Debian
等。这些 Linux
发行版中,大多数都默认装有 GCC
编译器(版本通常都较低)。
可以使用 gcc --version
或者 g++ --version
查看当前系统的 gcc
版本:
root@orangepizerolts:~# gcc --version
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@orangepizerolts:~#
g++ 版本
root@orangepizerolts:~# g++ --version
g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@orangepizerolts:~#
或者
root@orangepizerolts:~# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: arm-linux-gnueabihf
.....
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
root@orangepizerolts:~#
root@orangepizerolts:~# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: arm-linux-gnueabihf
......
Thread model: posix
gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)
root@orangepizerolts:~#
每个 Linux
发行版都有自己的软件包管理工具,比如 CentOS
系统的 yum
包管理器、Ubuntu
系统的 apt
包管理器等等,并且大多数 Linux
发行版都提供有 gcc
编译器的二进制软件包。
CentOS
安装 gcc
sudo yum -y install gcc
sudo yum -y install gcc-c++
Ubuntu
安装 gcc
sudo apt-get install gcc
sudo apt-get install g++
通过执行这 2 条指令,就可以在 CentOS
系统中利用 gcc
命令来执行 C
语言程序,利用 g++
命令来执行 C++
程序。
注意,读者切勿认为 GCC 只能用来编译 C 语言程序,g++ 只能用于编译 C++ 程序,这是不对的
GCC
官网提供的 GCC
编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC
编译器,可以安装 GCC
的移植版本。
目前适用于 Windows 平台、受欢迎的 GCC
移植版主要有 2 种,分别为 MinGW
和 Cygwin
。其中,
MinGW
侧重于服务 Windows 用户可以使用 GCC
编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;Cygwin
则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC
编译器,理论上可以运行 Linux 平台上所有的程序。MinGw
全称 Minimalist GNU for Windows
,应用于 Windows 平台,可以为我们提供一个功能有限的 Linux
系统环境以使用一些 GNU
工具,比如 GCC
编译器、gawk
、bison
等等。
MinGW
的安装参考:
http://c.biancheng.net/view/8077.html