目录

  • 1 引言
  • 2 最简单的方式
  • 3 源码安装gcc
  • 3.1 关联清华的gcc git库
  • 3.2 进入下载到的gcc文件查看要下载的版本名称
  • 3.3 切换到branch gcc-9上面
  • 3.4 编译和安装
  • 3.5 替换下载镜像源
  • 3.6 编译安装
  • 3.7 查看是否成功
  • 4 rpm包安装
  • 4.1 下载rpm依赖包
  • 4.2 安装依赖包


1 引言

参考博客Linux安装gcc的四种方法 参考博客Deepin源码安装gcc 三种方式安装gcc,每种方式对应不同的情况。而且为了使得显卡驱动能安装成功,gcc版本尽量是gcc-10。
(1)yum安装 (适用RedHat、CentOS系统)
命令行直接输入yum install gcc g++
(2)apt-get安装 (适用debian,ubuntu系统)
命令行直接输入sudo apt-get install gcc g++
(3)源码安装(适合升级gcc版本的用户,不适合系统本身没有gcc的用户)
(4)rpm包安装(比较复杂的方式,下下策)

2 最简单的方式

(1)安装gcc-7

sudo apt install gcc-7 g++-7

(2)删除原来版本gcc建立的软链接

sudo rm -rf /usr/bin/gcc
sudo rm -rf usr/bin/g++

(3)建立新的gcc版本的软连接

sudo ln -s /usr/bin/gcc-7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-7 /usr/bin/g++

(4)查看gcc版本

gcc --version

就可以看到gcc版本输出成功

3 源码安装gcc

此方法将会费时一个小时左右编译,慎重考虑。

3.1 关联清华的gcc git库

具体可以参考:https://mirrors.tuna.tsinghua.edu.cn/help/gcc.git/

git clone https://mirrors.tuna.tsinghua.edu.cn/git/gcc.git

3.2 进入下载到的gcc文件查看要下载的版本名称

cd gcc
git branch

可以看到当前是处于master上面,我们不需要安装最新master上面的版本,只需要安装某个release的branch code。
我们先看看有哪些branch

git branch -a


remotes/origin/releases/gcc-4.9
remotes/origin/releases/gcc-5
remotes/origin/releases/gcc-6
remotes/origin/releases/gcc-7
remotes/origin/releases/gcc-8
remotes/origin/releases/gcc-9

上面省略号部分是各种不同的branch,由于我们只需要安装gcc-9的最新代码

3.3 切换到branch gcc-9上面

git checkout releases/gcc-9

切换之后,当前目录下的源码也变成了最新的gcc-9下的代码。
查看是否git到本地目录

git branch

输出
master
releases/gcc-9

3.4 编译和安装

提前准备一个软件

sudo apt-get install flex

flex和yacc是编译器做词法分析的,在我安装的过程中,提示需要这个,否则会报错,所以我们提前安装好了。(参考:)

3.5 替换下载镜像源

(1)打开文件

vim ./contrib/download_prerequisites

这个脚本是用来检测是否依赖满足,同时会下载几个文件。但是有个问题在于,在国内去通过这个脚本下载内容太慢了,会报错修改为base_url=‘http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/’。wq保存退出。
(参考:)
(2)运行脚本

sudo bash ./contrib/download_prerequisites

可能由于网速的关系,你即使修改了base_url,运行可能会报错,直接删除掉下载好的内容,然后再次运行。我运行了三次才成功。

3.6 编译安装

./configure --disable-multilib

后面加上–disable-multilib的原因是因为我的是64位的系统,没有32位的库。你可以不加上这个选项,然后报错了再加上就好了。

sudo make -j 8

如果你按照前面所说安装了flex,在deepin里面运行上面命令应该不会报错。如果没有安装flex,安装报错了,请再安装了flex,同时记住在编译之前,必须先clean掉之前编译的内容。比如:sudo make realclean 然后再./configure --disable-multilib,最后再sudo make -j8
上面安装很耗时间,看你的CPU性能,我的是i5u系列,花了接近1小时

sudo make install

3.7 查看是否成功

gcc -v

Using built-in specs.
 COLLECT_GCC=gcc
 COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.1/lto-wrapper
 Target: x86_64-pc-linux-gnu
 Configured with: ./configure --disable-multilib
 Thread model: posix
 gcc version 9.3.1 20200328 (GCC)g++ -v
Using built-in specs.
 COLLECT_GCC=g++
 COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.1/lto-wrapper
 Target: x86_64-pc-linux-gnu
 Configured with: ./configure --disable-multilib
 Thread model: posix
 gcc version 9.3.1 20200328 (GCC)

4 rpm包安装

4.1 下载rpm依赖包

rpm包搜索网需要下载6个rpm包。本人以安装gcc-10举例。

linux 银河麒麟安装nginx 银河麒麟安装gcc_centos

需要下载包有以下六个。

1. cpp-10.2.1-8.fc34.x86_64.rpm  
2. kernel-headers-5.10.0-0.rc4.git0.1.fc34.aarch64.rpm   
3. glibc-headers-2.31-4.fc32.x86_64.rpm  
4. glibc-devel-2.32.9000-16.fc34.x86_64.rpm  
5. libgomp-10.2.1-8.fc34.aarch64.rpm  
6. gcc-10.2.1-8.fc34.aarch64.rpm

4.2 安装依赖包

(1)gcc顺序安装下列包,按顺序执行。

1. rpm -ivh cpp-10.2.1-8.fc34.x86_64.rpm  
2. rpm -ivh kernel-headers-5.10.0-0.rc4.git0.1.fc34.aarch64.rpm   
3. rpm -ivh glibc-headers-2.31-4.fc32.x86_64.rpm  
4. rpm -ivh glibc-devel-2.32.9000-16.fc34.x86_64.rpm  
5. rpm -ivh libgomp-10.2.1-8.fc34.aarch64.rpm  
6. rpm -ivh gcc-10.2.1-8.fc34.aarch64.rpm

(2)可能遇到的错

  • 报错“Failed dependencies: /bin/sh is needed by ****”

解决办法:就换一种安装方式

1. alien -i cpp-10.2.1-8.fc34.x86_64.rpm  
2. alien -i kernel-headers-5.10.0-0.rc4.git0.1.fc34.aarch64.rpm   
3. alien -i glibc-headers-2.31-4.fc32.x86_64.rpm  
4. alien -i glibc-devel-2.32.9000-16.fc34.x86_64.rpm  
5. alien -i libgomp-10.2.1-8.fc34.aarch64.rpm  
6. alien -i gcc-10.2.1-8.fc34.aarch64.rpm

虽然过程中有很多warning,但是不用管它。

  • 在安装某个包的时候报错:***.rpm is for architecture aarch64 ; the package cannot be built on this system
    解决办法
    在命令行查看
dpkg --print-architecture

输出arm64,则换以下方式安装这个包。***表示包名

sudo alien --to-deb ./***.rpm --target=arm64

如果输出amd64,则换以下方式安装这个包。***表示包名

sudo alien --to-deb ./***.rpm --target=amd64

4.3 查看是否安装成功

gcc -v