如果读者不清楚当前使用的 Linux 发行版是否已经装有 GCC 编译器,或者忘记了已安装 GCC 的版本号,可以打开命令行窗口(Terminal)并执行如下指令:
[root@bogon ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
Copyright (C) 2010 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@bogon ~]# gcc -version
bash: /usr/bin/gcc: No such file or directory
快速安装GCC编译器
要知道,每个 Linux 发行版都有自己的软件包管理工具,比如 CentOS 系统的 yum 包管理器、Ubuntu 系统的 apt 包管理器等等,并且大多数 Linux 发行版都提供有 GCC 编译器的二进制软件包。因此,我们可以直接“傻瓜式”地安装 GCC 编译器(以 yum 为例):
yum -y install gcc
yum -y install gcc-c++
需要注意的是,采用此方式安装的 GCC 编译器,版本通常较低。以我当前使用的 Centos 6.5 系统为例,通过执行以上 2 条指令,其安装的是 GCC 版本为 4.4.7,而当下 GCC 编译器已经迭代至 10.0.1 版本。注意,读者切勿认为 gcc 只能用来编译 C 语言程序,g++ 只能用于编译 C++ 程序,这是不对的。有关 gcc 和 g++ 命令,我们会在后续章节给大家做详细讲解。
这意味着,如果读者使用此方式安装 GCC 编译器,需要查看 GCC 编译器的版本(通过
gcc --version
指令)是否符合自己的需求。举个例子,如果读者想编译 C++11 标准下的 C++ 程序,则至少要安装 4.8 版本的 GCC 编译器,低版本的 GCC 编译器是不支持 C++11 标准的。总的来说,如果读者对 GCC 编译器的版本没有要求,则推荐使用此安装方式;反之,如果读者需要安装指定版本的 GCC 编译器,则需要使用接下来介绍的安装方法。
手动安装GCC编译器
和使用 yum 自动安装 GCC 编译器不同,手动安装 GCC 编译器需要提前到 GCC 官网下载指定版本的 GCC 源码安装包,读者可直接点击GCC源码包进行下载。值得一提的是,每个版本中都包含 2 种格式的压缩包,分别为 tar.gz 和 tar.xz,只是压缩格式不同,本节以 tar.gz 压缩包教大家安装 GCC 编译器。注意,此方式需要耗费的时间较长(几个小时),但支持安装指定版本的 GCC 编译器,并适用于大多数 Linux 发行版(不同之处会有额外提示);同时,如果读者想对已安装的 GCC 编译器进行版本升级,也可以使用此方式。
这里以在 CentOS 系统上安装 10.1.0 最新版本的 GCC 编译器为例,下载的是 gcc-10.1.0.tar.gz 源码压缩包,整个安装过程如下:
1) 以源码的方式安装 GCC 编译器,即手动编译 GCC 编译器的源码,需要当前系统中存在一个可用的编译器,我们可以用旧版本的 GCC 编译器来编译安装新版本的 GCC 编译器。
如果读者所用的操作系统已安装有旧版本的 GCC 编译器,则无需另行安装;反之,读者需要先运行如下命令,安装一个旧版本的 GCC 编译器:
yum install -y glibc-static libstdc++-static
yum install -y gcc gcc-c++
其中,第一行指令用于安装编译 C 和 C++ 代码所需的静态链接库;第二行指令用于安装编译 C 和 C++ 代码的 gcc 和 g++ 指令。再次强调,不同 Linux 发行版的软件管理器也有所不同,比如 yum 仅适用于 CentOS、RedHat、Fedora 发行版;而 Ubuntu 系统需使用 apt 完成安装。
2) 找到下载好的 gcc-10.1.0.tar.gz 安装包,将其解压至 /usr/local/ 目录下,解压命令为:
[root@bogon local]# tar -xf gcc-10.1.0.tar.gz -C /usr/local/
由此,在 usr/local/ 目录下,就生成了一个新的名为 gcc-10.1.0 的目录(也就是文件夹)。3) 紧接着执行如下指令,下载安装 GCC 所需要的依赖包(如 gmp、mpfr、mpc 等):
[root@bogon local]# cd /usr/local/gcc-10.1.0
[root@bogon gcc-10.1.0]# ./contrib/download_prerequisites
注意,一定观察此命令的执行结果,保证其确实是将 gmp、mpfr、mpc 等依赖包成功下载下来,才能继续执行下面的安装步骤。
4) 完成以上准备工作之后,就正式进入安装 GCC 编译器的环节。首先,我们需要手动创建一个目录,用于存放编译 GCC 源码包生成的文件。执行如下命令:
[root@bogon local]# mkdir gcc-build-10.1.0
[root@bogon local]# cd gcc-build-10.1.0
同时,由于 GCC 编译器支持多种编程语言的编译,而实际情况中我们可能只需要编译 1~2 种编程语言,因此需要对其进行必要的配置。通过执行如下指令,可以配置 GCC 支持编译 C 和 C++ 语言:
[root@bogon gcc-build-10.1.0]# ../gcc-10.1.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
有关 configure 后跟的各个参数的含义,读者仅需要了解 --enable-languages 用于设定 GCC 编译器支持编译的编程语言的类别,例如 c、c++、java、objc、obj-c++、go 等。
5) 在第 4 步创建好 makefile 文件之后,接下来就可以使用 make 命令来编译 GCC 源程序:
[root@bogon gcc-build-10.1.0]# make
注意,编译过程是非常耗时的(本机耗时 6 小时完成编译),因此如果读者选用此方式安装 GCC,则在执行 make 命令时一定要安排合适的时间。6) 最后,执行如下命令安装 gcc:
[root@bogon gcc-build-10.1.0]# make install
7) 由此就成功安装了 10.1.0 版本的 GCC 编译器。需要注意的是,如果此时读者直接执行 gcc --version,则 gcc 版本仍会显示之前安装的版本。操作系统重启之后,GCC 版本就会自行更正过来。
重启操作系统之后,执行 gcc --version 命令,如果看到如下输出结果,则证明安装成功:
[root@bogon ~]# gcc --version
gcc (GCC) 10.1.0
Copyright (C) 2020 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.
注意,本节是以 CentOS 操作系统为例,演示安装 GCC 编译器的具体过程,但实际上,此过程也完全适用于其它 Linux 发行版,只是在个别细节上(比如使用 yum 还是 apt 有或是其他软件包管理器),读者需要灵活调整,将其修改为自己所用操作系统支持的指令。