GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。 GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。 GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。 本文描述如何通过编译源码,来升级gcc编译版本,由于CentOS默认gcc编译版本4.8.5太低不能满足需求。故此处给出一个编译脚本。 [root@tencent ~]# mkdir /root/gcc [root@tencent ~]# cd /root/gcc [root@tencent ~]# vim upgradeGcc.sh [root@tencent ~]# chmod +x upgradeGcc.sh 下面为脚本具体内容 #! /bin/bash #在非root用户下,需要进行提权,使用sudo命令 #获取GCC源码 #sudo wget https://ftp./gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz wget https://ftp./gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz #解压 #sudo tar -zxvf gcc-8.3.0.tar.gz tar -zxvf gcc-8.3.0.tar.gz #进入解压后的文件夹 cd gcc-8.3.0/ #下载安装GCC的先决条件 #sudo ./contrib/download_prerequisites ./contrib/download_prerequisites #返回上一级目录,建立编译输出目录 cd .. #sudo mkdir bulid mkdir bulid #进入输出目录,执行如下命令,生成MakeFile文件 cd bulid/ #sudo ../gcc-8.3.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib ../gcc-8.3.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib #执行命令进行编译,若想加快编译速度,可以在其后面加上-j4(利用4个job,-j8也行),此值不宜设置过高 #sudo make make #安装 #sudo make install make install #检查版本 gcc -v #此时,虽安装结束,但path的路径仍为旧路径,故需要更改path环境变量 cp /usr/local/lib64/libstdc++.so.6.0.25 /lib64 cd /lib64 rm -rf libstdc++.so.6 ln -s libstdc++.so.6.0.25 libstdc++.so.6 执行如下命令,等待安装完成,预计完成时间较长。 [root@tencent ~]# chmod 777 /root/gcc/upgradeGcc.sh [root@tencent ~]# ./root/upgradeGcc.sh shell 中的命令既可以以脚本的方式执行,也可以以单条命令执行。 注:在安装过程中,可能会出现没有c++编译环境。此时只需要安装c++编译环境 yum install gcc-c++ -y 如果报下类错误是因为编译时缺少iconv的相关lib,需要安装iconvlib,而本地which iconv可以看到机器上是装有iconv的(which iconv输出结果为:/usr/local/bin/iconv)。如果你的机器也安装了iconv,那么接着往下看,否则先安装下再接着看。 这个问题的原因是linux在查找动态链接库时,忽视了/usr/local/lib中一系列*.so,将其添加到配置文件中,就可以解决。 checking size of off_t... configure: error: in `/tmp/vim74/src': configure: error: cannot compute sizeof (off_t) See `config.log' for more details. 解决办法(有root权限) 1、打开/etc/ld.so.conf这个配置文件 2、把下面这行内容添加进去 /usr/local/lib 3、保存文件,执行命令:/sbin/ldconfig 解决办法(没有root权限) 对于非root用户来说,/etc/ld.so.conf是read-only的,想要解决这个问题也是有办法的。在vim74目录下先执行如下命令: export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH // 为编译器设定额外的搜索路径 原理基本类似,修改ld.so.conf的根本原因只是为了让编译器在make过程中去对应的路径下寻找依赖,这里直接指定搜索路径,是一个效果。 接下来,再make && make install 就正常了。 本人使用的是第二个解决方案,成功解决该问题。 ———————————————— 版权声明:本文为CSDN博主「Nice_young」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_41955653/article/details/88775031 |
|
来自: 昵称QAb6ICvc > 《python》