升级gcc版本

举报
ZhjDayDayUp 发表于 2022/01/18 19:31:35 2022/01/18
【摘要】 记录一下升级gcc版本的步骤

clickhouse在新版本又要求使用新的gcc版本了,升级gcc版本是常有的事情了,但是我又经常会忘记具体步骤,现记录如下:

正常步骤

1、下载gcc的源码包

wget http://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz

2、解压安装包

tar -xzvf gcc-10.1.0.tar.gz 

3、进入gcc-10.1.0目录

4、运行ownload_prerequisites 脚本,帮助我们下载、配置、安装依赖库

./contrib/download_prerequisiles

注意:如果是离线安装,需要下载好对应的依赖包,分别安装好依赖:gmp,mpfr,mpc,isl。他们之间有依赖关系,注意安装顺序

(1)安装gmp:

make -j8
make install

(2)安装mpfr

./configure --with-gmp=/usr/local/lib  //指定gmp的路径
make -j8
make install

(3)安装mpc

./configure --with-gmp=/usr/local/lib --with-mpfr=/usr/local/lib
make -j8
make install

(4)安装isl

./configure --with-gmp=/usr/local/lib
make -j8
make install

如果不想安装这四个依赖包,可以将这些组件包放到gcc目录下,并解压,然后建立软链接。

tar -xf gmp-6.1.0.tar.bz2
tar -xf mpfr-3.1.4.tar.gz
tar -xf mpc-1.0.3.tar.gz
tar -xf isl-0.18.tar.gz
ln -sf gmp-6.1.0 gmp
ln -sf mpfr-3.1.4 mpfr
ln -sf mpc-1.0.3 mpc
ln -sf isl-0.18 isl

注意:离线安装的情况,还需要指定环境变量,否则会出现找不到so文件的情况。

(1)对当前用户有效,重启后失效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

(2)对所有用户永久有效

vim /etc/ld.so.conf
/usr/local/lib //增加依赖库的lib路径
ldconfig //保存退出

5、建立目录,将所有输出放入该目录

mkdir gcc-build

6、进入目录,并执行如下命令生成makefile

cd gcc-build
../configure --prefix=/usr/local/gcc-10.1 -enable-checking=release -enable-languages=c,c++ -disable-multilib

7、编译

花费时间较长

make -j4

8、安装

make install

9、确认是否安装成功

gcc -v
g++ -v

遇到的坑

1、在make阶段报如下错误:

configure:error:in '/home/software/gcc/gcc-10.1.0/gcc_temp/gcc':
configure:error:C++ preprocessor "/lib/cpp" fails sanity check
See 'config.log' for more details
make[2]:***[configure-stage1-gcc]Error 1
make[2]:Leaving directory '/home/software/gcc/gcc-10.1.0/gcc_temp'
make[1]:***[stage1-bubble]Error2
make[1]:Leaving directory '/home/software/gcc/gcc-10.1.0/gcc_temp'
make:***[all]Error 2

问题原因是缺少必要的C++库,解决方法如下:

yum install gcc-c++

2、cc运行的版本和gcc不一致

​ 这是因为,用gcc查询的时候,对应的是/usr/local/bin/gcc,而cc对应的是/usr/bin/gcc,后者还是之前的老版本,只需要重新设置cc的软连接。

cd /usr/bin
rm /usr/bin/cc
ln -s /usr/local/bin/gcc /usr/bin/cc

3、configure: error: `CXX’ has changed since the previous run

原因是configure没有更新导致,可以根据提示 “run make distclean and/orrm ./config.cache and start over”解决。

make distclean  #不是make clean
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。