Linux更新gcc-10.0.1版本 linux降低gcc-9.3.0版本

最近刚配置了一个新的linux环境,新的linux环境的gcc默认是4.8.5的当前的很多环境下是很落后的,我最近在更新gcc的时候,也趟过了一遍了,下面就是我更新gcc的一些步骤

需要准备的相关文件:

  1. gcc下载地址:https://mirrors.aliyun.com/gnu/gcc/gcc-10.1.0/

  1. gmp下载地址:gnu-gmp安装包下载_开源镜像站-阿里云 (aliyun.com)

  1. mpfr下载地址:gnu-mpfr安装包下载_开源镜像站-阿里云 (aliyun.com)

  1. mpc下载地址:gnu-mpc安装包下载_开源镜像站-阿里云 (aliyun.com)

简单版本(这个后面写的,如果有不懂的可以去看复杂版本):

只需要下载:gcc

  1. 解压gcc:tar -vxf gcc-10.1.0.tar.gz

  1. 打开文件夹:cd:gcc-9.3.0

  1. 创建文件夹build(名字一般不强求):mkdir build & cd build

  1. 安装gcc所需依赖项: ../.contrib/download_prerequisites(这个会自动安装gmp 、mpfr、mpc)

  1. 生成Makefile文件:…/configure --prefix=/usr/local/gcc-9.3.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib

–-enable-languages表示你要让你的gcc支持哪些编程语言

--disable-multilib表示编译器不编译成其他平台的可执行代码;

--disable-checking表示生成的编译器在编译过程中不做额外检查

--enable-checking=xxx 表示编译过程中增加XXX检查

--prefix=/usr/local/gcc-9.3.0 指定安装路径–enable-bootstrap 表示用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable

  1. 编译生成makefile文件,并安装

make -j8 && make install

  1. 设置环境变量、头文件

touch /etc/profile.d/gcc.sh
sudo chmod 777 /etc/profile.d/gcc.sh
sudo echo -e ‘\nexport PATH=/usr/local/gcc-9.3.0/bin:$PATH\n’ >> /etc/profile.d/gcc.sh && source /etc/profile.d/gcc.sh

sudo ln -sv /usr/local/gcc/include/ /usr/include/gcc
  1. 设置库文件、 加载动态连接库

touch /etc/ld.so.conf.d/gcc.confsudo chmod 777 /etc/ld.so.conf.d/gcc.conf
touch /etc/ld.so.conf.d/gcc.confsudo chmod 777 /etc/ld.so.conf.d/gcc.conf

sudo ldconfig -v
ldconfig -p |grep gcc
  1. 安装完成:gcc-v

ps:文件的版本尽量不于其他几个包的版本差距过大,容易出现安装错误,下面是我安装的版本

gcc是:10.1.0,gmp是:5.0.2,mpfr是:3.1.5,mpc是:1.0.1

在安装gcc之前,必须安装GMP 4.2或更高版本、mpfr2.3. 1或更高版本、MPC0.8. 0或更高版本。(这是底线~)

复杂版本(第一次安装)

一、GMP编译
1. 解压
    tar -vxf gmp-5.0.2.tar.bz2
2. 编译
    进入文件夹:cd gmp-5.0.1/
    运行:         ../configure --prefix=/usr/local/gmp-5.0.2
    编译:        make
    安装:        sudo make install
二、MPFR编译
1. 解压
    tar -vxf mpfr-3.1.5.tar.xz
2. 编译
    进入文件夹:cd mpfr-3.1.5/
    运行:         ./configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-5.0.2
    ps:其中--with=/usr/local/gmp-5.0.2是依赖关系,/usr/local/gmp-3.1.5是gmp的安装目录
    编译:        make
    安装:        sudo make install
三、MPC编译
1. 解压
    tar -vxf mpfr-3.1.5.tar.xz
2. 编译
    进入文件夹:tar -vxf mpc-1.0.1.tar.gz
    运行:         ./configure --prefix=/usr/local/mpc-1.0.1 --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.1.5
    ps:记得后面两项的依赖项,也就是你的gmp和mpfr的安装目录
    编译:        make
    安装:        sudo make install

linux下安装gmp遇到 configure:error:no usable m4 in$path or /user/5bin解决方法:

上面的报错是因为你没有安装m4,安装m4就可以了;以下两种命令二选其一:

#yum install m4或 #apt-get install m4

ps:如果遇到权限问题就在命令签名加上 sudo 来执行;

四、GCC编译
1. 解压
    tar -vxf gcc-10.1.0.tar.gz
2. 编译
    进入文件夹:cd gcc-10.1.0
    创建文件夹:mkdir build
    进入文件夹:cd build
    运行:         ../configure --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.1

    ps:原指令$ ${srcdir}/configure --prefix=${destdir} [其它选项]
        安装的时候记得把真实目录替换掉${srcdir}和${destdir}
        gcc安装的地方,用${destdir}表示
        {srcdir}表示当前文件的位置
    编译:        make  /*这里可以是用make -j4 条件好的可以使用make -j8 -j12 -j16 后面的取决于你电脑的线程数量 可以提高编译速度*/
/*这里编译时间很长 一个小时左右*/

安装: sudo make install

安装好后还得进行相关的链接:

移动相关的文件

mv/usr/bin/gcc/usr/bin/gcc485

mv/usr/bin/g++ /usr/bin/g++485

mv/usr/bin/c++ /usr/bin/c++485

mv/usr/bin/cc/usr/bin/cc485

链接文件

ln-s /usr/local/gcc-10.1.0/bin/gcc/usr/bin/gcc

ln-s /usr/local/gcc-10.1.0/bin/g++ /usr/bin/g++

ln-s /usr/local/gcc-10.1.0/bin/c++ /usr/bin/c++

ln-s /usr/local/gcc-10.1.0/bin/gcc/usr/bin/cc

备份和链接

mv/usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak

ln-s /usr/local/gcc-10.1.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

最后就可以通过gcc-v查看当前的 gcc版本

关于GCC降级从10.0.1降到9.3.0

这个我刚开始的时候以为是和第一次安装一样的 但是到了gccmake的时候就出现了:

make[2]: Leaving directory '/home/chen/gcc-9.3.0/build' Makefile:23010: recipe for target 'stage1-bu

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages

make[1]: Leaving directory '/home/chen/gcc-9.3.0/build' Makefile:993: recipe for target 'all' failed

等相应的问题找了很多的方法,最后得出的结论就是,高版本的编译器不能编译低版本的编译器

然后我卸载了当前的gcc g++

指令:sudo apt-get remove gcc g++

然后重新安装了系统的gcc g++

sudo apt-get install gcc g++

然后安装相应的版本就可以了

ps:这里的删除不是删除了你之前安装的高版本编译器,只是删除了相应的链接文件

后面想要使用高版本连接回来就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange....

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值