机房一台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. python第七十九天--第十四周作业

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. MySQL复制ERROR 1794 (HY000): Slave is not configured or failed to initialize properly.

    ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set  ...

  3. 高通GPIO驱动(DTS方式)

    gpio调试的方式有很多,linux3.0以上ARM架构的处理器基本上都采用了DTS的方式,在linux3.0可以通过获取sysfs的方式来获取gpio状态: sysfs文件系统的建立可以参照下面的博 ...

  4. 【PAT】B1054 求平均值(20 分)

    一开始就想用sscanf和sprintf去实现,但是没有设计好思路,卡住了. 看了网上别人的博客,都是用的很复杂的逻辑分别判断,一言不合就七八十航代码 今天早上看了柳神的代码,发现跟自己的思路一样,开 ...

  5. 软件工程实践_Task2_sudoku

    软工实践_Task2 标签(空格分隔): 软工实践 相关要求:第二次作业--个人项目实战 github:传送门 解题思路 先是一点杂谈. 首先,看完作业要求之后,心里先有个大概的框架. 语言:C++ ...

  6. 用Python读写Excel文件的方式比较

    虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Ex ...

  7. IOS HTML5页面中数字自动变蓝并识别为手机号

    开发HTML5的项目时发现页面元素为一串数字时,IOS手机会默认显示成蓝色字体,并且添加下划线,点击数字时会提示是否识别为手机号. 解决此问题的方法很简单,在head标签中添加下面的meta标记即可解 ...

  8. 卡尔曼滤波跟踪 opencv

    0 卡尔曼OPENCV 预测鼠标位置 卡尔曼滤波不要求信号和噪声都是平稳过程的假设条件.对于每个时刻的系统扰动和观测误差(即噪声),只要对它们的统计性质作某些适当的假定,通过对含有噪声的观测信号进行处 ...

  9. go标准库的学习-database/sql

    参考:https://studygolang.com/pkgdoc 导入方式: import "database/sql" sql包提供了保证SQL或类SQL数据库的泛用接口. 使 ...

  10. oracle 查询分区表的最大分区以及分区字段的最大值

    select 'select max(' || column_name || ') from ' || owner || '.' || name || ';'  from DBA_PART_KEY_C ...