CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)

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

1)查看系统版本
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)

2)查看默认的gcc版本
[[email protected] ~]# 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)查看默认动态库
[[email protected] ~]# 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的新特性。验证如下:
[[email protected] ~]# 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;
}

[[email protected] ~]# cd /tmp/
[[email protected] tmp]# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
cc1plus: error: unrecognized command line option "-std=c++11"

5)下载gcc
[[email protected] ~]# yum -y install xz
[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget http://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz
[[email protected] src]# tar -xf gcc-6.4.0.tar.xz -C /usr/src
[[email protected] src]# cd /usr/src/gcc-6.4.0
[[email protected] 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/目录下
[[email protected] gcc-6.4.0]# pwd
/usr/src/gcc-6.4.0
[[email protected] gcc-6.4.0]# cp /usr/local/src/mpfr-2.4.2.tar.bz2 ./
[[email protected] gcc-6.4.0]# cp /usr/local/src/gmp-4.3.2.tar.bz2 ./
[[email protected] gcc-6.4.0]# cp /usr/local/src/mpc-0.8.1.tar.gz ./
[[email protected] gcc-6.4.0]# cp /usr/local/src/isl-0.15.tar.bz2 ./
[[email protected] gcc-6.4.0]# tar -xf mpfr-2.4.2.tar.bz2
[[email protected] gcc-6.4.0]# tar -xf gmp-4.3.2.tar.bz2
[[email protected] gcc-6.4.0]# tar -xf mpc-0.8.1.tar.gz
[[email protected] gcc-6.4.0]# tar -xf isl-0.15.tar.bz2
[[email protected] gcc-6.4.0]# ln -sv mpfr-2.4.2 mpfr
[[email protected] gcc-6.4.0]# ln -sv gmp-4.3.2 gmp
[[email protected] gcc-6.4.0]# ln -sv mpc-0.8.1 mpc
[[email protected] gcc-6.4.0]# ln -sv isl-0.15 isl

如果提前把这四个软件包放在gcc-6.4.0目录下并解压了,如上操作,那么就不需要再执行上面的"./contrib/download_prerequisites"这一步了!
==============================================================================================

[[email protected] 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
[[email protected] 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
[[email protected] 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
[[email protected] 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

[[email protected] gcc-6.4.0]# ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
[[email protected] gcc-6.4.0]# make -j4    //-j4:make对多核处理器的优化选项,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。此步骤非常耗时!耐心等待吧~~
[[email protected] gcc-6.4.0]# make install
[[email protected] 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
[[email protected] 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

[[email protected] gcc-6.4.0]# cd /usr/lib64
[[email protected] 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
[[email protected] lib64]# mv libstdc++.so.6 libstdc++.so.6.old
[[email protected] lib64]# ln -sv libstdc++.so.6.0.22 libstdc++.so.6
`libstdc++.so.6‘ -> `libstdc++.so.6.0.22‘

7)升级后验证
查看升级后的gcc版本(有时可能需要重启服务器才能看到更新后的版本)
[[email protected] lib64]# init 6      #或者reboot
[[email protected] ~]# 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.

查看最新动态库:
[[email protected] ~]# 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的新特性
[[email protected] ~]# cd /tmp/
[[email protected] tmp]# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
[[email protected] tmp]# ./tryCpp11
5

原文地址:https://www.cnblogs.com/kevingrace/p/9456563.html

时间: 2024-10-08 21:38:25

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

linux下监控用户的操作记录

想知道用户登陆系统后都操作了什么,怎么办? 别急,linux下有一个script工具,专门记录终端会话中所有输入输出结果,并存放到指定文件中. 先看看怎么录制吧! 1.创建日志存放目录 # mkdir /opt/operation_log # chmod 777 -R /opt/operation_log 2.设置用户登陆后自动录制 # vi /etc/profile   #末尾追加一下内容 if [ $UID -ge 500 ]; then    exec script -t 2>/opt/o

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

电子邮件系统的组成: 1)邮件用户代理(Mail User Agent , MUA),MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口. 最常用的 MUA 有: linux 中的 mail , elm , pine 等. Windows 的 outlook , foxmail 等  2)邮件代理器( Mail Transfer Agent , MTA ) MTA 负责邮件的存储和转发( store and forward ). MTA 监视用户代理的请求,根据电子邮件

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

Centos7.x版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,废话就不多赘述了,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一.yum方式安装 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 5

Linux(centos)下gcc,g++,gdb,输入法的安装及英文改中文

对于Linux(centos)安装(在此我的是版本是6.5): 1.英文改中文方法: 在root模式下: 运行以下命令: 运行之后显示以下内容: 然后将其中的LANG="en_US.UTF-8"改为LANG="zh_CN.UTF-8"然后wq保存退出: 如果wq保存正确后,重启centos. 完成后重启centos.重启后会显示以下界面.选择更新名称. 完成之后就变成了中文. 2.下载输入法 仍在root模式下运行命令 yum groupinstall   lang

Centos7.4下部署PowerDNS的操作记录

之前已经介绍了DNS环境的部署过程,这里说下PowerDNS的使用及部署,PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可以从MySQL,Oracle,PostgreSQL等的数据库读取数据.PowerDNS安装了Poweradmin,能实现Web管理DNS记录,非常的方便. 一.部署以MariaDB作为后端数据的PowerDNS系统 1)关闭防火墙和selinux [[email protected] ~]# ca

解决CentOS 7 history命令不显示操作记录的时间和用户身份问题

centos6 中history命令显示操作命令的时间和用户身份 [[email protected] ~]# history   294  2017-01-06 16:46:48  root clear   295  2017-01-06 16:46:50  root ll   296  2017-01-06 16:46:52  root cat hostname.sh    297  2017-01-06 16:46:56  root cat nginxlog_cut.sh    298  

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

在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/zemo/demo.git/info/refs fatal: HTTP request failed 这个一般是由于服务器本身自带的git版本过低造成的: [[email p

Linux下磁盘分区、挂载、卸载操作记录

Linux下磁盘分区.挂载.卸载操作记录. 操作环境:CentOS release 6.5 (Final) Last login: Wed Oct 26 17:25:27 2016 from 118.230.194.76 [[email protected] ~]# [[email protected] ~]# fdisk -l Disk /dev/sda: 536.9 GB, 536870912000 bytes 255 heads, 63 sectors/track, 65270 cylin

Centos 6下软raid操作脚本

#!/bin/sh main () { clear echo '          ------------------------------------------------------          ' echo '          1.Create a software raid array          ' echo '          2.View raid array sync status           ' echo '          3.View rai