00.目录

  • 00.目录
  • 01. 简介
  • 02. 软件包下载
  • 03. 安装gmp
  • 04. 安装mpfr
  • 05. 安装mpc
  • 06. 安装gcc
  • 07. 错误排查(可选 )

01. 简介

由于gcc4.4不支持C++11新特性,所以将Redhat6.5中gcc4.4升级到gcc4.8. 本文介绍在系统无法连接互联网的情况下,如何升级GCC。离线和在线升级的主要区别在于,如果可以联网,在升级gcc前的需要安装的依赖包,可以通过运行gcc安装包下的脚本自行下载安装,免去了很多的麻烦。

环境:RedHat6.5

首先下载gcc安装包,本文为gcc-4.8.5.tar.gz,解压后,如果直接运行安装目录下的configure脚本,可能会因为当前系统的GMP,MPFR,MPC的版本过低而抛出如下的错误

02. 软件包下载

需要使用的安装包为 gcc-4.8.5.tar.gz,gmp-5.0.5.tar.bz2,mpfr-3.0.1.tar.gz,mpc-1.0.1.tar.gz.

如果是在联网环境,可以运行安装目录下的”./contrib/download_prerequisites”脚本来下载相关的依赖。而由于我们是在局域网内,所以需要到因特网中下载这三个安装包,然后逐个安装:

download_prerequisites脚本内容如下:

#! /bin/sh

# Download some prerequisites needed by gcc.
# Run this from the top level of the gcc source tree and the gcc
# build will do the right thing.
#
# (C) 2010 Free Software Foundation
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1
tar xjf $MPFR.tar.bz2 || exit 1
ln -sf $MPFR mpfr || exit 1wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1
tar xjf $GMP.tar.bz2  || exit 1
ln -sf $GMP gmp || exit 1wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1
tar xzf $MPC.tar.gz || exit 1
ln -sf $MPC mpc || exit 1rm $MPFR.tar.bz2 $GMP.tar.bz2 $MPC.tar.gz || exit 1

下载链接:
gcc下载链接:gcc-4.8.5下载
gmp下载链接:gmp-5.0.5下载
mpfr下载链接:mpfr-3.0下载
mpc下载链接: mpc-1.0.1下载

03. 安装gmp

GMP是一个任意精度的开源算术库,可用于符号整数,有理数,浮点数计算。

第一步: 解压

[root@deng tmp]# tar -xjvf gmp-5.0.5.tar.bz2

第二步: 检查环境,生成对应文件

[root@deng tmp]# cd gmp-5.0.5
[root@deng gmp-5.0.5]# ./configure

第三步: 编译

[root@deng gmp-5.0.5]# make -j4
[root@deng gmp-5.0.5]# make check

第四步: 安装

[root@deng gmp-5.0.5]# make install

04. 安装mpfr

mpfr主要为提供C/C++多精度浮点运算

第一步: 解压

[root@deng tmp]# tar -xjvf mpfr-3.0.1.tar.bz2

第二步: 检查环境

[root@deng tmp]# cd mpfr-3.0.1
[root@deng mpfr-3.0.1]# ./configure –with-gmp-include=/usr/local/include –with-gmp-lib=/usr/local/lib

第三步: 编译

[root@deng mpfr-3.0.1]# make -j4
[root@deng mpfr-3.0.1]# make check

第四步: 安装

[root@deng mpfr-3.0.1]# make install

05. 安装mpc

第一步: 解压

[root@deng tmp]# tar -xzvf mpc-1.0.1.tar.gz

第二步: 检查环境

[root@deng tmp]# cd mpc-1.0.1
[root@deng mpc-1.0.1]# ./configure

第三步: 编译

[root@deng mpc-1.0.1]# make -j4

第四步: 安装

[root@deng mpc-1.0.1]# make install

第五步: 配置
安装后,它们的头文件位于”/usr/local/include”,默认情况下程序可以自动找到该路径;它们的动态库位于”/usr/local/lib”,可在环境变量追加该路径,此处就在当前用户的环境变量上加上该路径:

[root@deng tmp]# vim ~/.bash_profile
添加如下内容:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64:/usr/lib64

使配置生效

[root@deng tmp]# source ~/.bash_profile

06. 安装gcc

第一步: 解压

[root@deng tmp]# tar -xzvf gcc-4.8.5.tar.gz

第二步: 检查环境
[root@deng tmp]# cd gcc-4.8.5
[root@deng gcc-4.8.5]# mkdir gcc-4.8.5-build
[root@deng gcc-4.8.5]# cd gcc-4.8.5-build/

可以参考gcc -v选项 注意: 如果此处出现关于java的错误, 可以将Java选项去掉

[root@deng gcc-4.8.5-build]# ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –disable-multilib –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++, –disable-dssi –disable-libjava-multilib –with-ppl –with-cloog –with-tune=generic –with-arch_32=i686 –build=x86_64-redhat-linux

第三步: 编译

[root@deng gcc-4.8.5-build]# make -j4

第四步: 安装

[root@deng gcc-4.8.5-build]# make install

第五步: 测试
gcc测试

g++测试

验证安装
除了可以通过”gcc -v”查看安装后的gcc版本,还可以通过编写C++11标准的程序来验证,在编译C++11程序时,应该加上”std=c++11”,否则默认是以C99进行编译,将会抛出错误。

07. 错误排查(可选 )

如果06出现老版本 就可以参考一下操作

安装完成后,系统默认没有修改环境变量,目前还是使用老版本的gcc。
设置使用新版gcc:
ls /usr/local/bin | grep gcc 添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives –install /usr/bin/gcc gcc /usr/local/gcc4.8/bin/i686-pc-linux-gnu-gcc 40

第二种方式: 创建软连接

mkdir /usr/gcc447backup/
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/local/gcc4.8/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc4.8/bin/g++ /usr/bin/g++

参考博客:https://blog.csdn.net/zlarm/article/details/70255249
参考博客:https://blog.csdn.net/qq_22790049/article/details/52873915

【Tools】gcc4.4升级到gcc4.8相关推荐

  1. Pro Tools购买、升级、升级计划续期详解

    Pro Tools购买.升级.升级计划续期详解 2018-03-13神游技术人生之AVID音频 本文介绍Pro Tools软件的产品类型和差异,购买时如何衡量和选择? 升级计划是什么? 如何续订或恢复 ...

  2. ubuntu12.04默认gcc4.6.3,如何升级到gcc4.8

    之前所有在12.04上面的工作 对于gcc版本没有特殊要求,最近ORBSLAM2要求支持C++11. 今天安装SDL明确要求GCC4.8以上版本,否则出现错误. 这里记录升级方法:  http://b ...

  3. Centos6.5升级系统自带gcc4.4.7到gcc4.8.0

    下载 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2 解压 tar -xjvf gcc-4.8.0.tar.bz2 进入 cd  ...

  4. 【Tools】Tools博客汇总

    00. 目录 文章目录 00. 目录 01. Linux基础 02. C语言 03. 数据结构和算法 04. C++ 05. Linux环境高级编程 06. 数据库 07. Qt 08. 编辑器 09 ...

  5. arm linux gcc 4.6.3,编译gcc-4.6.3

    编译gcc-4.6.3 准备 下载GCC 源码包 : gcc-4.6.3.tar.bz2 下载GCC 依赖包: gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0 ...

  6. 黄聪:buffer overflow detected问题解决及gcc-4.1安装

    报错:*** buffer overflow detected ***:  将ubuntu 9.04自带的gcc-4.3.2替换成gcc-4.1.0. 出现这个报错的背景很多,但根本是gcc版本过高或 ...

  7. ubuntu g++ 升级

    原地址:http://www.ilovedou.com/?p=1887 windows下的vs2012对c++11力度不够.最近把gcc4.7.3支持的c++11特性玩了一遍,没办法,只能升级到gcc ...

  8. redhat下升级gcc编译器

    在有网络的环境下,采用下载gcc源码进行编译的方式升级gcc版本,所以需要本身已有gcc编译器. 获取 gcc-4.9.2的包: wget http://gcc.skazkaforyou.com/re ...

  9. 升级glibc经验谈!!!

       升级glibc经验谈!!! 都说glibc不能升级,其实只是很容易就使系统崩溃而已,不过既然GNU给咱发布GLIBC,不能升级算怎么回事啊,而且很多东西要求的GLIBC的版本也较高,那我们就来试 ...

最新文章

  1. Linux驱动之内核加载模块过程分析
  2. 【项目经理之修炼(7)】《基础篇》人生游戏中的神器——谦虚
  3. spark Rdd 操作transformaction和action等
  4. python float 精度_浅谈Python里面小数点精度的控制
  5. 绑定注意事项——数据源的属性
  6. SnapKit 是怎样炼成的 | 掘金技术征文
  7. linux进程作业号,Linux系统进程管理及作业操作
  8. GitHub使用教程详解(上)——官网操作指南[翻译]
  9. 2018深圳杯数学建模A题--人才吸引力评价模型研究
  10. moxa串口服务器网页版用户名密码,moxa串口服务器设置密码
  11. 创新设计思维---自学报告
  12. 炸!撩下 OLAP 数据分析的黑马神器 ClickHouse
  13. 雪花屏幕保护程序(VB.ENT)
  14. 【知识兔Excel教程】7个Excel序号填充的经典案例,照搬这些公式,效率倍增
  15. zookeeper原理:分布式协同技术
  16. BasicRF学习心得
  17. OpenGL学习三十九:飘动的旗帜
  18. 给你的web页面添加盲水印,附带检盲水印方案
  19. 批量将txt文件转为excel文件
  20. mac m1 无法连接公司内网问题

热门文章

  1. 有关 Nintendo GameCube
  2. map初始化_您可曾这样初始化一个map呢?
  3. int*类型和int类型_mysql8.0.19中在navicat客户端中int、bigint等类型设置长度保存后为0...
  4. centos 忘记root密码_Linux忘记root密码解决方案
  5. 第一道java编程题
  6. 用API获得Internet Explorer_Server类的HTML
  7. [转] 使用Docker容器,这些错误千万别犯
  8. rest模式get,post,put,delete简单讲解
  9. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
  10. sql判断字段是否为空