首页UC › Centos 升级GCC到4.8.2

Centos 升级GCC到4.8.2

本文使用操作系统:Centos 6.4 Desktop,64bit;

原GCC版本:4.4.7;

目标:升级GCC到4.8.2,以支持C++11。

  1. 获取GCC 4.8.2包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;
  2. 解压缩:tar -xf gcc-4.8.2.tar.gz;
  3. 进入到目录gcc-4.8.2,运行:./contrib/download_prerequisites。这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
  4. 建立输出目录并到目录里:mkdir gcc-build-4.8.2;cd gcc-build-4.8.2;
  5. ../configure –enable-checking=release –enable-languages=c,c++ –disable-multilib。–enable-languages表示你要让你的gcc支持那些语言,–disable-multilib不生成编译为其他平台可执行代码的交叉编译器。–disable-checking生成的编译器在编译过程中不做额外检查,也可以使用–enable-checking=xxx来增加一些检查;
  6. 编译:make;注意此步和上一步,比较耗时;
  7. 安装:make  install;
  8. 验证:gcc -v;或者g++ -v,如果显示的gcc版本仍是以前的版本,就需要重启系统;或者可以查看gcc的安装位置:which gcc;然后在查看版本 /usr/local/bin/gcc -v,通常gcc都安装在该处位置,如果显示为;

 

 

升级Centos系统之后,运行filezilla时,出现如下错误的提示信息:

./filezilla: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.15' not found (required by ./filezilla)

如果是64位系统报错信息如下:

./filezilla: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.15′ not found (required by ./filezilla)

原因是没有GLIBCXX_3.4.15版本,或是更高的版本。
输入命令查询一下结果:

[root@localhost ~]# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

我们看到当前GCC版本中的确没有GLIBCXX_3.4.15。

64位系统命令为:

[root@localhost ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

下载新版本,地址:http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb

64位系统:
http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb

假设下载的文件放在/data0/software/。
解压:

[root@localhost software]# ar -x libstdc++6_4.7.2-5_i386.deb && tar xvf data.tar.gz
解压后出现/data0/software/usr目录;
[root@localhost software]# cd  /data0/software/usr/lib/i380-linux-gun
[root@localhost i386-linux-gnu]# cp libstdc++.so.6.0.17 /usr/lib
[root@localhost i386-linux-gnu]# /usr/lib
[root@localhost lib]# rm libstdc++.so.6
[root@localhost lib]# ln libstdc++.so.6.0.17 libstdc++.so.6

注意64位系统为
[root@localhost software]# cd  /data0/software/usr/lib/x86_64-linux-gnu
[root@localhost x86_64-linux-gnu]# cp libstdc++.so.6.0.17 /usr/lib64
[root@localhost x86_64-linux-gnu]# /usr/lib
[root@localhost lib64]# rm libstdc++.so.6
[root@localhost lib64]# ln libstdc++.so.6.0.17 libstdc++.so.6

重新建立软连接,我们再输入命令查询一下结果:

[root@localhost lib]# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
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_DEBUG_MESSAGE_LENGTH

已经安装好GLIBCXX_3.4.15啦。

发表评论