操作系统:CentOS release 6.5 (Final)

当前gcc版本号:build=x86_64-redhat-linux
                          Thread model: posix
                          gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

待安装gcc版本号:gcc-4.8.5.tar.gz

编译新版本号的gcc之前,必须确保系统中已经安装了低版本号的gcc编译器。

【注】:编译gcc前。可能须要安装的lib文件libstdc++-devel.i686 / libstdc++-devel.x86_64。

                在gcc编译阶段。可能的配置參数../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++--disable-multilib

                假设不带--disable-multilib选项,则编译就会生成32bit和64bit的版本号。即多平台交叉编译,这里就须要对应的libstdc++-devel.i686 / libstdc++-devel.x86_64。

1> 获取gcc-4.8.5安装包,并解压:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

2> 编译前,自己主动下载所需的依赖库。

【注】:查看该文件可知,主要是下载gmp-4.3.2、mpc-0.8.1、mpfr-2.4.2三个包。并解压。建立软件连接。

                假设用户不能正常使用wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2来获取包:

                1)考虑 使用curl命令curl -O ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 

                2)查找国内镜像源,ftp地址更改之

3>不须要手动去编译2>中下载安装的三个包

參考之前达人安装编译过程,多会有提到,在正式编译gcc-4.8.x之前,须要手动去编译以上的三个依赖。

但实測,在新版本号的gcc中。不须要我们去手动编译这些东西,仅仅须要保证三个文件夹的软链存在即可。

设置软链。就不用去指定--with-mpc、--with-mpfr、--with-gmp三个路径。

4> 生成编译时的配置文件

【注】:gcc-build-4.8.5是我新建立的,用来编译gcc的文件夹,编译gcc是不能在gcc-4.8.5的根文件夹下进行的。必须要新建一个文件夹来。

5>使用make工具编译

【注】:make -j 4声明要採用多核来生成make文档,加快编译速度。假设是单核用户,那还是算了,老实。make吧。

6> 更新系统默认的gcc版本号

说明(从最后一个參数说起):

101:版本号优先级,值越大,就越先启用

/usr/local/bin/gcc:新的gcc文件文件夹,以上的编译操作默认,会在路径/usr/local下生成对应的库文件和运行文件等。

gcc:系统调用时,在命令行中的名字,也就是路径的一个别名吧。

/usr/bin/gcc:之前版本号gcc调用时的路径。

完毕配置以后。能够看到以下的相似结果:

假设想要,切换回旧版本号。请參考update-alternatives --config命令。

然后。运行updatedb。更新系统文件信息,并退出当前session。又一次连接session:

啊,最终编译好了,好紧张的说!

!!!

7> 更新gcc-4.8.5的库文件

提示更新*.so依赖文件之前,编译cmake时,遇到的错误例如以下:

提示我们,尽管gcc是新版本号的。可是检測到对应的依赖库还是旧本版的,路径/usr/lib64/libstdc++.so.6。以下定位问题。

上面有两个路径存在libstdc++.so.6,意识到应该是系统如今默认作用的库还是之前旧版本号的,安全起见,这里我为旧版本号的so文件做了备份。

有两种方法处理这个问题:

1) 建立软链接(推荐):

ln -sb /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

最终结果:

2) 备份/usr/lib64/下的libstdc++.so.6和libstdc++.so.6.0.13,拷贝/usr/local/lib64/libstdc++.so.6、libstdc++.so.6.0.19到/usr/lib64文件夹下

编译cmake-3.5

1>自己主动配置编译文档

2>编译

3>查看信息

4>编译实例projectApache Arrow

cmakeproject时,指定特定的gcc、g++版本号!!

。!

!!!

WTF?

为什么cmake一个project默认调用的编译器还是旧版本号的。而不是新安装的gcc-4.8.5。

尽管纠结了半天,怀疑是不是之前的gcc编译过程有问题。可是细致确认后,肯定了是cmake本身的问题。

故參考https://cmake.org/Wiki/CMake_FAQ#Method_3_.28avoid.29:_use_set.28.29,设置对应的cmake编译选项。

cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/bin/g++

指定新版本号GCC的路径。编译成功。

总结:

至此,本人所需的一切工作环境均已经搭建完毕,希望本人的一些痛苦经历不要再重现,毕竟,工作时间是宝贵的。

:)

CentOS 6.x安装多GCC版本号,cmake的安装与使用的更多相关文章

  1. [CentOS]怎样解决gcc版本号冲突?

    今天碰到一个比較坑爹的问题.在centos上用yum安装编译环境,执行: yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel o ...

  2. 非root源码安装gcc和cmake

    一.安装cmake 1.下载cmale 下载地址:https://cmake.org/files tar -zxvf cmake-3.19.8.tar.gz cd cmake-3.19.8/ ./co ...

  3. cmake编译安装mysql

    运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 前言:这里我使用的安装方式是(cmake编译),我选择的版本是:cmake-2.8.8.tar.gz.mysql-5.5.32.ta ...

  4. vsftpd 编译安装 及 隐藏版本号

    环境:Redhat Enterprise Linux AS 4.0 update2(i386) 不提示,均表示以root权限执行. [注:]//为注释符,如"// 建立MySQL组" ...

  5. 在CentOS 7.2下升级gcc编译器的版本

    默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...

  6. Linux下查看Nginx安装目录、版本号信息?

    Linux环境下,怎么确定Nginx是以那个config文件启动的? 输入命令行: ps  -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 ngi ...

  7. CentOS 5.5 Nginx+JDK+MySQL+Tomcat(jsp)成功安装案例

    在CentOS 5.5中安装Nginx+jdk+mysql+tomcat是非常容易的.只需yum安装环境包和nginx.解压安装jdk和tomcat.配置profile文件.server.xml和ng ...

  8. Linux/RedHat 编译安装GNU gcc 4.9.0 (g++)

    这里说的是编译安装,yum/apt-get 等安装方法比較简单,不阐述! 1.下载源代码包:gcc.gnu.org 2.解压: tar -xjvf gcc-4.9.0.tar.bz2 3.下载编译所需 ...

  9. Qt for Linux:环境搭建(CentOS 6.5 32位)——完全从零安装

    正文开始前,我们假设,用户可以操作终端 拥有root权限,以下所有操作也均由root完成 可以上网 安装了CentOS 6.5 32位 注:红色部分,每个人可能都不一样 话不多说,列出本章大致流程 1 ...

随机推荐

  1. 【Java_多线程并发编程】基础篇—Thread类中start()和run()方法的区别

    1. start() 和 run()的区别说明 start()方法: 它会启动一个新线程,并将其添加到线程池中,待其获得CPU资源时会执行run()方法,start()不能被重复调用. run()方法 ...

  2. mycat中间件安装与使用

    前提: 安装JDK版本在7.0及其以上 1.下载: 下载地址在:http://dl.mycat.io/ 选择1.6-release版本下载 2.安装: 直接解压即可: tar -zxf Mycat-s ...

  3. 【http】【转发】HTTP访问控制(CORS)

    当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求.   比如,站点 http://domain-a.com 的某 HTML 页面通过 <img ...

  4. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 287: ordinal not in range(128)

    python的str默认是ascii编码,和unicode编码冲突,就会报这个错误. import sys reload(sys) sys.setdefaultencoding('utf8')

  5. PyCharm学习笔记(一) 界面配置

     通过Ctrl+鼠标滚轮调整字体大小  设置代码区默认字体及大小 设置调试区的字体大小 设置代码风格:如Tab缩进 定义Python模板文件 # @Time : ${DATE} ${TIME} # @ ...

  6. 03005_Tomcat

    1.Tomcat下载 (1)Tomcat解压版:链接:Tomcat解压版 密码:0iw0 : (2)源码:链接:源码 密码:3o43 . 2.Tomcat的目录结构 (1)bin:脚本目录   ①启动 ...

  7. IntelliJ IDEA 类和方法注释的生成以及Javadoc的简单使用记录

    idea,设置类注释和,方法注释的常见的设置方法(不同的版本设置方法有所偏差,简单记录一些目前自己在使用的方法,) 方法注释:在keyMap中搜索Fix doc comment ,后点击右键设置一个快 ...

  8. div+css居中

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

  9. Matplotlib基本图形之条形图2

    Matplotlib基本图形之条形图2 1.绘制多条条形图 示例代码: import time import numpy as np import matplotlib.pyplot as plt b ...

  10. Leetcode 391.完美矩形

    完美矩形 我们有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域. 每个矩形用左下角的点和右上角的点的坐标来表示.例如, 一个单位正方形可以表示为 [1,1 ...