在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器.目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序.GCC不仅功能非常强大,结构也异常灵活。
本文描述如何通过编译源码,来升级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.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
wget https://ftp.gnu.org/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 就正常了。
本人使用的是第二个解决方案,成功解决该问题。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !