CentOS 6.5 升级gcc到4.8 以及libstdc++

CentOS 6.5 自带gcc太旧不支持c11, 升级到4.8的步骤:

引用:
http://cache.baiducontent.com/c?m=9d78d513d99216f31eb0d5690d67d371182497634bc0d16578c39339c6350a564717e5ac27551a10948522685be90f1efdf1456f2a4665f28cc8ff1b8ae7d4756ed97b23706bd71c4dce42f0981372d620e61cbee55ffaebad6ec7f587cedf5650cd4e077a82f4965c0412cb78f0636ba5f9c7&p=8566c54ad5c340e70be29635595298&newp=8b2a975f86cc42af59b2c6344d5780231610db2151ddd101298ffe0cc4241a1a1a3aecbf27281701d8ce776305ac4d58eaf03478350034f1f689df08d2ecce7e35&user=baidu&fm=sc&query=centos+6%2E5+gcc+4%2E8&qid=d9968aa80001bb84&p1=1

  贴一下步骤:      一、简易安装      操作环境 CentOS6.5
        64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2
          不能通过yum的方法升级,需要自己手动下载安装包并编译

  1.1 获取安装包并解压        
 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2      
 tar -jxvf  gcc-4.8.2.tar.bz2         
 当然,http://ftp.gnu.org/gnu/gcc     里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.


  1.2 下载供编译需求的依赖项         
 参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
   cd gcc-4.8.0       ./contrib/download_prerequisites 


  1.3 建立一个目录供编译出的文件存放         
 mkdir gcc-build-4.8.2        
 cd gcc-build-4.8.2

  1.4 生成Makefile文件        
 ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

  1.5 编译(注意:此步骤非常耗时)      
 make -j4         
 -j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。
          我在安装此步骤时候出错,错误描述:

   `compilation terminated. make[5]: * [_gcov_merge_add.o] 错误 1 make[5]: Leaving directory 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc’
make[4]: * [multi-do] 错误 1 make[4]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’
make[3]: * [all-multi] 错误 2 make[3]: * 正在等待未完成的任务….
make[3]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc’
make[2]: * [all-stage1-target-libgcc] 错误 2 make[2]: Leaving
directory/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make[1]: *
[stage1-bubble] 错误 2 make[1]: Leaving directory
/home/imdb/gcc-4.8.2/gcc-build-4.8.2’ make: * [all] 错误 2

  大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和
  • 1
  • 2

x86_64-unknown-linux-gnu/libgcc
根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):
sudo yum -y install glibc-devel.i686 glibc-devel

  1.6、安装      sudo make install

          二、验证安装      重启,然后查看gcc版本:
          gcc -v      尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr
          复制代码         1 //tryCpp11.cc         2 #include <iostream>       3 #include <memory>         4           5 int main()        6 {         7     std::shared_ptr<int>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

pInt(new int(5)); 8 std::cout << *pInt << std::endl; 9
return 0; 10 } 复制代码 验证文件:
g++ -std=c++11 -o tryCpp11 tryCpp11.cc ./tryCpp11

          三、其他安装:
  - 在Ubuntu机器上安装:参考文献[3]

  - 非简易安装:参考文献[4]

  - 多个gcc版本共存问题:暂无


          四、参考文献      [1] 参考的主要安装步骤 http://www.cnblogs.com/ytjjyy/p/4008096.html

    注:这篇文章的后半部分解决动态库的方法非常有用处
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

安装完后, 编译程序运行应该还是有 GLIBCXX not found的错误
解决方案:

http://blog.csdn.net/officercat/article/details/39519265

注意其中

$ cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64   
$ rm -rf /usr/lib64/libstdc++.so.6  
$ ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6  
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC  

猜你喜欢

转载自blog.csdn.net/fanhenghui/article/details/80355222
今日推荐