- 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 安装依赖包
参考博客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是编译器做词法分析的,在我安装的过程中,提示需要这个,否则会报错,所以我们提前安装好了。(参考:https://www.cnblogs.com/cyanrose/p/11490979.html)
3.5 替换下载镜像源(1)打开文件
vim ./contrib/download_prerequisites
这个脚本是用来检测是否依赖满足,同时会下载几个文件。但是有个问题在于,在国内去通过这个脚本下载内容太慢了,会报错修改为base_url=‘http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/’。wq保存退出。 (参考:https://blog.csdn.net/davidhopper/article/details/79681695) (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举例。
需要下载包有以下六个。
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