机房一台centos6.9机器部署了jenkins发布系统,开发人员在用node编译js,发现依赖的gcc版本低了,故需要将gcc升级到高版本(至少5.0版本以上),这里选择升级到6.4.0版本,下面是升级的操作记录:

1)查看系统版本
[root@uatjenkins01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final) 2)查看默认的gcc版本
[root@uatjenkins01 ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 3)查看默认动态库
[root@uatjenkins01 ~]# 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
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH 4)低版本的gcc,不支持c++11的新特性。验证如下:
[root@uatjenkins01 ~]# vim /tmp/tryCpp11.cc
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> pInt(new int(5));
std::cout << *pInt << std::endl;
return 0;
} [root@uatjenkins01 ~]# cd /tmp/
[root@uatjenkins01 tmp]# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
cc1plus: error: unrecognized command line option "-std=c++11" 5)下载gcc
[root@uatjenkins01 ~]# yum -y install xz
[root@uatjenkins01 ~]# cd /usr/local/src/
[root@uatjenkins01 src]# wget http://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz
[root@uatjenkins01 src]# tar -xf gcc-6.4.0.tar.xz -C /usr/src
[root@uatjenkins01 src]# cd /usr/src/gcc-6.4.0
[root@uatjenkins01 gcc-6.4.0]# ./contrib/download_prerequisites ==============================================================================================
上面命令在编译gcc时会自动下载mpfr-2.4.2.tar.bz2、gmp-4.3.2.tar.bz2、mpc-0.8.1.tar.gz和isl-0.15.tar.bz2软件包,由于网速不给力时,可能会出现无法下载
的情况,所以可以事先将这4个软件包放至在/usr/src/gcc-6.4.0目录下,并解压! 四个软件包的百度下载地址:https://pan.baidu.com/s/11oC6Z5Jxe8kjsmWEoXYczg 提取密码:qqgk
下载到/usr/local/src/目录下
[root@uatjenkins01 gcc-6.4.0]# pwd
/usr/src/gcc-6.4.0
[root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/mpfr-2.4.2.tar.bz2 ./
[root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/gmp-4.3.2.tar.bz2 ./
[root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/mpc-0.8.1.tar.gz ./
[root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/isl-0.15.tar.bz2 ./
[root@uatjenkins01 gcc-6.4.0]# tar -xf mpfr-2.4.2.tar.bz2
[root@uatjenkins01 gcc-6.4.0]# tar -xf gmp-4.3.2.tar.bz2
[root@uatjenkins01 gcc-6.4.0]# tar -xf mpc-0.8.1.tar.gz
[root@uatjenkins01 gcc-6.4.0]# tar -xf isl-0.15.tar.bz2
[root@uatjenkins01 gcc-6.4.0]# ln -sv mpfr-2.4.2 mpfr
[root@uatjenkins01 gcc-6.4.0]# ln -sv gmp-4.3.2 gmp
[root@uatjenkins01 gcc-6.4.0]# ln -sv mpc-0.8.1 mpc
[root@uatjenkins01 gcc-6.4.0]# ln -sv isl-0.15 isl 如果提前把这四个软件包放在gcc-6.4.0目录下并解压了,如上操作,那么就不需要再执行上面的"./contrib/download_prerequisites"这一步了!
============================================================================================== [root@uatjenkins01 gcc-6.4.0]# ll -d gmp-4.3.2*
drwxrwxrwx 15 1001 wheel 4096 Jan 8 2010 gmp-4.3.2
-rw-r--r-- 1 root root 1897483 Aug 10 16:55 gmp-4.3.2.tar.bz2
[root@uatjenkins01 gcc-6.4.0]# ll -d isl-0.15*
drwxrwxr-x 9 1000 1000 12288 Jun 11 2015 isl-0.15
-rw-r--r-- 1 root root 1574964 Aug 10 17:03 isl-0.15.tar.bz2
[root@uatjenkins01 gcc-6.4.0]# ll -d mpc-0.8.1*
drwxrwxrwx 5 1000 1000 4096 Dec 8 2009 mpc-0.8.1
-rw-r--r-- 1 root root 544950 Aug 10 16:57 mpc-0.8.1.tar.gz
[root@uatjenkins01 gcc-6.4.0]# ll -d mpfr-2.4.2*
drwxrwxrwx 5 1114 1114 12288 Nov 30 2009 mpfr-2.4.2
-rw-r--r-- 1 root root 1077886 Aug 10 16:49 mpfr-2.4.2.tar.bz2 [root@uatjenkins01 gcc-6.4.0]# ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
[root@uatjenkins01 gcc-6.4.0]# make -j4 //-j4:make对多核处理器的优化选项,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。此步骤非常耗时!耐心等待吧~~
[root@uatjenkins01 gcc-6.4.0]# make install
[root@uatjenkins01 gcc-6.4.0]# ls /usr/local/bin | grep gcc
gcc
gcc-ar
gcc-nm
gcc-ranlib
x86_64-pc-linux-gnu-gcc
x86_64-pc-linux-gnu-gcc-6.4.0
x86_64-pc-linux-gnu-gcc-ar
x86_64-pc-linux-gnu-gcc-nm
x86_64-pc-linux-gnu-gcc-ranlib 6)配置gcc
[root@uatjenkins01 gcc-6.4.0]# find / -name "libstdc++.so*"
.......
/usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 [root@uatjenkins01 gcc-6.4.0]# cd /usr/lib64
[root@uatjenkins01 lib64]# cp /usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 libstdc++.so.6.0.22
[root@uatjenkins01 lib64]# mv libstdc++.so.6 libstdc++.so.6.old
[root@uatjenkins01 lib64]# ln -sv libstdc++.so.6.0.22 libstdc++.so.6
`libstdc++.so.6' -> `libstdc++.so.6.0.22' 7)升级后验证
查看升级后的gcc版本(有时可能需要重启服务器才能看到更新后的版本)
[root@uatjenkins01 lib64]# init 6 #或者reboot
[root@uatjenkins01 ~]# gcc --version
gcc (GCC) 6.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 查看最新动态库:
[root@uatjenkins01 ~]# 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
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH 升级到高版本的gcc,就支持c++11的新特性
[root@uatjenkins01 ~]# cd /tmp/
[root@uatjenkins01 tmp]# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
[root@uatjenkins01 tmp]# ./tryCpp11
5

CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)的更多相关文章

  1. linux下监控用户的操作记录---录像播放性质

    想知道用户登陆系统后都操作了什么,怎么办? 别急,linux下有一个script工具,专门记录终端会话中所有输入输出结果,并存放到指定文件中. 先看看怎么录制吧! 1.创建日志存放目录 # mkdir ...

  2. linux下sendmail邮件系统安装操作记录

    电子邮件系统的组成:1)邮件用户代理(Mail User Agent , MUA),MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口. 最常用的 MUA 有: linux ...

  3. 升级openssl 操作记录

    openssl 是一群黑客最爱研究搞怪的一个软件为啥,据说openssl是一群数学家编写的一套算法 哈哈 好,说正事 openssl 经常发布补丁包,因为升级是避免不了的 步骤: 查看当前openss ...

  4. Linux下绑定网卡的操作记录

    公司采购的服务器安装了双网卡,并进行bond网卡绑定设置,网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6. 第一种模式:mod= ...

  5. Centos7.4 版本环境下安装Mysql5.7操作记录

    Centos7.x版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,废话就不多赘述了,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一.yum方式安 ...

  6. centos下升级git版本的操作记录

    在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned e ...

  7. 转:centos下升级git版本的操作记录

    https://www.cnblogs.com/kevingrace/p/8252517.html 在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时 ...

  8. centos6下升级git版本的操作记录

    编译go_ethereum的时候出现了错误 然后发现是自己的git没有升级成功  因为编译需要高版本的git版本  所以会编译不成功  之后执行 root@uatjenkins01 ~]# git - ...

  9. openssl版本升级操作记录

    需要部署nginx的https环境,之前是yum安装的openssl,版本比较低,如下: [root@nginx ~]# yum install -y pcre pcre-devel openssl ...

随机推荐

  1. js实现页面锚点定位动画滚动

    项目上需要的效果,个人不想用jquery实现,想着用js自己试试,花了点儿时间,终于实现.. 上干货.. function scrollTo(y, duration) { /*y:目标纵坐标,dura ...

  2. FUSE 用户空间文件系统 (Filesystem in Userspace)

    FUSE 仓库 Wiki FUSE 性能评测 关于Fuse文件系统: FUSE (Filesystem in Userspace) is an interface for userspace prog ...

  3. Django框架的使用教程--mysql数据库[三]

    Django的数据库 1.在Django_test下的view.py里面model定义模型 from django.db import models # Create your models here ...

  4. 路由交换01-----ICMP协议

    路由交换协议------ICMP ICMP协议 ICMP (InternetControl Message Protocol)协议是TCP/IP协议簇的核心协议之一,用来在网络设备之间传递各种差错和控 ...

  5. February 6th, 2018 Week 6th Tuesday

    To be is to be perceived. 存在即被感知. How to interpret this quote? Maybe it means that everything in you ...

  6. iOS命名规范(转载)

    转载地址:http://www.cnblogs.com/qiqibo/archive/2012/09/05/2671553.html 正文: • 格式化代码 ◦ 指针“*”号的位置 ▪ 如:NSStr ...

  7. Java输出打印工具类封装

    在进行Java打印输出,进行查看字段值的时候,觉得每次写了System.out.println之后,正式发布的时候,还得一个个的删掉,太麻烦了,经过别人的指教,做了一个Java的打印输出封装类,只为记 ...

  8. ScheduledThreadPoolExecutor源码解读

    1. 背景 在之前的博文--ThreadPoolExecutor源码解读已经对ThreadPoolExecutor的实现原理与源码进行了分析.ScheduledExecutorService也是我们在 ...

  9. UOJ #390. 【UNR #3】百鸽笼

    UOJ #390. [UNR #3]百鸽笼 题目链接 看这道题之前先看一道相似的题目 [PKUWC2018]猎人杀. 考虑类似的容斥: 我们不妨设处理\(1\)的概率. 我们令集合\(T\)中的所有鸽 ...

  10. 【洛谷】【数论】P1876 开灯

    [题目描述:] 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来--直到第N个 ...