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>编译实例工程Apache Arrow

cmake工程时,指定特定的gcc、g++版本!!!!!!!!

WTF?为什么cmake一个工程默认调用的编译器还是旧版本的,而不是新安装的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的路径,编译成功。

总结:

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

:)
--------------------- 
作者:DreammingTime 
来源:CSDN 
原文:https://blog.csdn.net/u014445499/article/details/51005121 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值