zoukankan      html  css  js  c++  java
  • CentOS 6.x安装多GCC版本号,cmake的安装与使用

    操作系统: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安装包,并解压:



    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的路径。编译成功。


    总结:

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

    :)

  • 相关阅读:
    笔记35 跨重定向请求传递数
    判断邮箱的正则表达式
    按钮
    async await 的用法
    笔记34 Spring MVC的高级技术——处理multipart形式的数据
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees,Unique Binary Search Trees II
    Validate Binary Search Tree
    Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8608601.html
Copyright © 2011-2022 走看看