安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 9.2.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。
1 下载
在GCC网站上(http://gcc.gnu.org)下载资源。可供下载的文件一般有两种形式:gcc-9.2.0.tar.gz和gcc-9.2.0.tar.bz2
2. 解压缩
将下载好的gcc-9.1.0.tar.bz2或gcc-9.1.0.tar.gz选择下面相应的一种方式解包:
tar zxvf gcc-9.2.0.tar.gz
或者
tar -jxvf gcc-9.2.0.tar.bz2
新生成的gcc-9.2.0这个目录被称为源目录,用{srcdir}表示它。以后在出现{srcdir}的地方,应该用真实的路径来替换它。
在{srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。
安装gcc之前,需要安装几个依赖包。在gcc安装文件中,有个脚本可以帮我们自动下载、配置、安装依赖库
$ cd {srcdir} //进入解压后的目录
$ ./contrib/download_prerequisites //执行脚本
3. 建立目标目录
目标目录用{objdir}表示,是用来存放编译后生成的文件的。GCC建议编译后的文件不要放在源目录{srcdir]中最好单独存放在另外一个目录中。
例如,可以这样建立一个叫 /usr/local/gcc-9.2.0的目标目录并进入:
mkdir /usr/local/gcc-9.2.0
cd /usr/local/gcc-9.2.0 //这一步是为了让生成的文件都到目标目录中
4. 配置
配置是通过执行{srcdir}下的configure来完成的。${destdir}代表你想要安装的目录:
{srcdir}/configure --prefix={destdir} [其它选项]
例如,如果想将GCC 9.2.0安装到/opt/gcc-9.2.0目录下在我的机器上,我是这样配置的:
{srcdir}/configure --prefix=/opt/gcc-9.2.0 --disable-checking --enable-languages=c,c++ --disable-multilib
将GCC安装在/opt/gcc-9.2.0目录下,不检测,支持C/C++语言,不编译32位操作系统
5. 编译
% make -j4
j4代表最多同时能允许4个编译命令执行,数字可根据具体的电脑cpu核心数进行选择以提高编译速度
6. 安装
% make install
至此,GCC 9.2.0安装过程就完成了。
7. 终端命令设置
GCC 9.1.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在{destdir}目录下。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
1.打开 /etc/profile 在其中的最后添加代码 例如 export PATH="{destdir}/bin:$PATH"(添加库文件类似)
2.在terminal中使用命令 source /etc/profile 使修改生效
3.使用 gcc -v命令查看一下版本吧(我用yum将其余预版本的gcc都删了)
其他方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
% which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 9.1.0中的gcc、g++等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin
% ln -s {destdir}/bin/gcc gcc920
% ln -s {destdir}/bin/g++ g++920
这样,就可以分别使用gcc、g++来调用GCC 9.2.0的gcc、g++ 完成对C、C++ 程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
(终于搞定了 fuckkkkkkk!!)