linux升级gcc4.8,Centos升级gcc4.4.7升级gcc4.8手记

出于需求系统自带的是gcc4.4.7,版本太低无法编译,被逼无奈只能升级gcc了,碰到很多坑,下载这个玩意就用了不少时间。

[root@VM_222_92_centos ~]# gcc -v

Using built-in specs.

Target: x86_64-redhat-linux

Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux

Thread model: posix

gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

1.下载源码包

wget http: //ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2

tar -jxvf gcc-4.8.0.tar.bz2

2.下载编译所需依赖库

cd gcc-4.8.0

./contrib/download_prerequisites

cd ..

3.建立编译输出目录

mkdir gcc-build-4.8.0

4.进入此目录,执行以下命令,生成makefile文件

cd gcc-build-4.8.0

../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

5.编译

# j 后面的是核心数,编译速度会比较快

make -j4

6.安装

sudo make install

7.切换GCC到新版

确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail找一下

ls /usr/local/bin | grep gcc

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/i686-pc-linux-gnu-gcc 40

8.确认当前版本已经切换为新版(重新连接shell生效).

gcc -v

418f392d8f6c84195d68d7476ce2f08d.png

近次make的时候提示下面的问题。

../driver: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ../driver)

../driver: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../driver)

这是因为虽然升级了GCC,生成的动态库没有替换老版本gcc的动态库。

解决方法:

cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64/

rm -f libstdc++.so.6

ln -s libstdc++.so.6.0.18 libstdc++.so.6

这里fluffos编译时的环境为libevent-2.1.so.6,为了能直接使用上,需要对应安装。

OK,检查一下

[root@iZ237sml740Z ~]# strings /usr/lib64/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_3.4.18

GLIBCXX_FORCE_NEW

GLIBCXX_DEBUG_MESSAGE_LENGTH

至此,已完成了GCC相关的安装&设置,20170722补充。

现在来说下坑吧,以上的步骤完全不需要画蛇添足,几个步骤不多不少,我之前对第二步进行单独的make,make check,结果悲剧了,各种报错。碰到第二坑就是磁盘问题,上面说系统盘只有8G,编译过程中就报了磁盘不足,刚刚发现这个新服务器的数据盘没有挂载。

挂在部分:

1、查看数据盘

在没有分区和格式化数据盘之前,使用 “df –h”命令,是无法看到数据盘的,可以使用“fdisk -l”命令查看。如下图:

4d74a120df38a0fd2b2e1a7f53a2398d.png

友情提示:若您执行fdisk -l命令,发现没有 /dev/xvdb 标明您的云服务无数据盘,那么您无需进行挂载,此时该教程对您不适用

2、 对数据盘进行分区

50a87b5fee033496a8eb19d12a2d37cc.png

执行“fdisk /dev/xvdb”命令,对数据盘进行分区;根据提示,依次输入“n”,“p”“1”,两次回车,“wq”,分区就开始了,很快就会完成。

3、 查看新的分区

使用“fdisk -l”命令可以看到,新的分区xvdb1已经建立完成了。

29913b68e0a14ee6d43aadf7076e79bb.png

4、格式化新分区

使用“mkfs.ext3 /dev/xvdb1”命令对新分区进行格式化,格式化的时间根据硬盘大小有所不同。

5f219c90e292edcbf353b84668a3bf02.png

5、添加分区信息

使用“echo ‘/dev/xvdb1 /mnt ext3 defaults 0 0’ >> /etc/fstab”命令写入新分区信息。

然后使用“cat /etc/fstab”命令查看,出现以下信息就表示写入成功。

0b5afbcce8d35a4be7d44c60a034a766.png

6、挂载新分区

使用“mount -a”命令挂载新分区,然后用“df -h”命令查看,出现以下信息就说明挂载成功,可以开始使用新的分区了。

5ad2f849509bc4d7ded0d0f0ccd1039b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值