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


    总结:

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

    :)

  • 相关阅读:
    ReentrantLock 使用
    IDEA artifacts Web Application:Exploded Web Application:Archive
    IntelliJ IDEA project module
    Rabbitmq 基本属性
    Spring ThreadPoolTaskExecutor
    Spring AsyncRestTemplate
    OpenOffice Word文档转换成Html格式
    dubbo 多协议和多注册中心
    linux 配置Tomcat开机启动
    dubbo通信协议
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8608601.html
Copyright © 2020-2023  润新知