Linux系统gcc升级到gcc.4.8.5详细步骤

48 篇文章 0 订阅

1、获取gcc4.8.5的源码包

文件存放于root根目录

1.1服务器联网情况下执行

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

1.2断网情况下执行

或者使用迅雷下载打本地, gcc-4.8.5.tar.gz包,然后上传。

2、解压压缩包

tar –zxvf gcc-4.8.5.tar.gz

3、下载、配置和安装需要的依赖库

文件存放于root根目录

3.1服务器联网情况下执行

cd gcc-4.8.5/
./contrib/download_prerequisites //该脚本会自动下载、配置、安装依赖库

这个命令执行时间较长,若等不及,可以手动使用迅雷下载到当前目录

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
再上传到/root/gcc-4.8.5/目录中

3.2断网情况下执行

否则需要手动下载gmp-4.3.2.tar.gz、mpfr-2.4.2.tar.gz、mpc-0.8.1.tar.gz,然后上传。然后安装和配置。

(1)安装gmp

首先安装gmp,命令如下:

tar -jxvf gmp-4.3.2.tar.bz2
mv gmp-4.3.2/ gcc-4.8.5/
cd gcc-4.8.5
ln –sf gmp-4.3.2 gmp

(2)安装mpfr

命令如下:

tar -jxvf mpfr-2.4.2.tar.bz2
mv mpfr-2.4.2/ gcc-4.8.5/
cd gcc-4.8.5/
ln –sf mpfr-2.4.2 mpfr

(3)安装mpc

tar -xvzf mpc-0.8.1.tar.gz
mv mpc-0.8.1/ gcc-4.8.5
cd gcc-4.8.5
ln –sf mpc-0.8.1 mpc

3.3 配置环境变量

执行 vim /etc/profile 编辑环境变量配置文件,直接在文件最后添加一行下面的变量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/gcc-4.8.5/mpc:/root/gcc-4.8.5/gmp:/root/gcc-4.8.5/mpfr

上面的路径要和实际安装时的路径一致,冒号和等号之间不要有空格,保存并退出后,执行 source /etc/profile 使环境变量生效

4、建编译后的存放目录

mkdir gcc-build-4.8.5

5、生成Makefile文件

cd gcc-build-4.8.5
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

6、执行make

make(耗时较长,需耐心等待)

7、安装

make install

8、重启操作系统

执行系统重启命令:

reboot //一定要重启

校验新版本安装是否生效:

gcc -v
g++ -v

9、库升级

编译程序或运行其它程序时,有时会出现类似:

/usr/lib64/libstdc++.so.6: version`GLIBCXX_3.4.21’ not found

的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。

9.1 检查

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

9.2 找到 gcc 4.8.5 最新的库文件

find / -name “libstdc++.so*”

显示如下

/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so
/usr/lib/vmware-tools/lib64/libstdc++.so.6
/usr/lib/vmware-tools/lib64/libstdc++.so.6/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6/libstdc++.so.6
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.py
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.py
/usr/local/lib64/libstdc++.so.6.0.19
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so
/usr/local/lib64/libstdc++.so.6.0.19-gdb.py
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so

上面粗体加黑的libstdc++.so.6.0.19,就是目前4.8.5的新的库文件了。

9.3 复制这个库文件到指定目录并修改软连接

cp /opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64
cd /usr/lib64
rm libstdc++.so.6
ln -s libstdc++.so.6.0.19 libstdc++.so.6

9.4 检查一遍

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

显示如下:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19

10、 卸载系统自带的gcc

以root用户执行:

rpm -qa |grep gcc | xargs rpm -e --nodeps

11、 修改ld.so.conf文件

vi /etc/ld.so.conf

然后在文件最下面添加:(标红的路径需要和实际的路径一致)

/usr/local/lib

/usr/local/lib64

保存,退出后。执行:

ldconfig /etc/ld.so.conf

如果有报错,需要删除/usr/local/lib64/libstdc++.so.6.0.19.py文件,命令如下:

cd /usr/local/lib64
rm –rf libstdc++.so.6.0.19.py

再次执行:

ldconfig /etc/ld.so.conf

使其生效

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
gcc升级到4.7以上 参考文档 https://blog.51cto.com/191226139/2066137 安装编译依赖软件包 yum install gcc gcc-c++ glibc-static -y cp -a /mnt/backup/software/php-7.3.9.tar.gz /root/ 下载gcc源码包与依赖包 wget -c http://mirror.koddos.net/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz tar -zxvf /root/gcc-src/gcc-4.8.5.tar.gz -C /root/ tar xvf /root/gcc-src/cloog-0.18.4.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/gmp-6.1.2.tar.xz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/isl-0.14.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/mpc-1.0.3.tar.gz -C /root/gcc-4.8.5/ tar xvf /root/gcc-src/mpfr-3.1.4.tar.gz -C /root/gcc-4.8.5/ 或者 tar xvf /root/gcc-src/mpfr-3.1.4.tar.bz2 -C gcc-4.8.5/ mv /root/gcc-4.8.5/cloog-0.18.4 /root/gcc-4.8.5/cloog mv /root/gcc-4.8.5/gmp-6.1.2/ /root/gcc-4.8.5/gmp mv /root/gcc-4.8.5/isl-0.14/ /root/gcc-4.8.5/isl mv /root/gcc-4.8.5/mpc-1.0.3/ /root/gcc-4.8.5/mpc mv /root/gcc-4.8.5/mpfr-3.1.4/ /root/gcc-4.8.5/mpfr cd /root/gcc-4.8.5/ mkdir gcc-build && cd gcc-build ../configure --prefix=/usr/local/gcc-4.8.5 --enable-checking=release --enable-bootstrap --enable-languages=c,c++ --disable-multilib --enable-gather-detailed-mem-stats --with-long-double-128 出错后清空编译目录下的相关文件 # make distclean 查看CPU的核数,使用时应使用2倍值 lscpu |grep -A 1 'Model name' make -j 4 或者 make 编译过程约40~50分钟左右,占用2.7G空间 make install 检验版本 /usr/local/gcc-4.8.5/bin/gcc -dumpversion /usr/local/gcc-4.8.5/bin/g++ -dumpversion /usr/local/gcc-4.8.5/bin/c++ -dumpversion 添加LD_LIBRARY_PATH 临时生效 export LD_LIBRARY_PATH="/usr/local/gcc-4.8.5/lib64:$LD_LIBRARY_PATH" 永久生效 echo '/usr/local/gcc-4.8.5/lib64' > /etc/ld.so.conf.d/gcc4.8.5.conf ldconfig 出现以下提示,把这个文件删除了或忽略它:ldconfig: /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start. rm -rf /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py cd /usr/local/gcc-4.8.5/bin && ln -s gcc cc 添加环境变量 echo 'export PATH=/usr/local/gcc-4.8.5/bin:$PATH' >> /etc/profile source /etc/profile 查看版本 gcc -v cc -v

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值