Linux gcc源码安装

问题

由于源码安装MySQL5.7时,报主机gcc版本过低,需要使用4.4及以上版本,使用gcc -v查询现用gcc版本为4.1。想要在主机上保留4.1与4.4两个版本。

报错信息.png

流程

1、官网下载gcc安装源码
官网下载索引:Index of /gnu/gcc,下载自己需要的版本。这次下载的是v4.4.7的gcc-4.4.7.tar.gz
2、上传Linux主机解压

tar -zxvf gcc-4.4.7.tar.gz

3、编译安装
在与gcc-4.4同级目录下新建gcc-4.4obj目录,进入gcc-4.4obj目录执行:

../gcc-4.4.7/configure --with-system-zlib --prefix=/user/gcc-4.4.7/gcc-4.4obj --enable-threads=posix --with-cpu=generic --enable--long-long --enable-languages=c,c++  --with-gmp=/user/gmp-6.1.0/gmp-6.1.0-obj --with-mpfr=/user/mpfr-3.1.6/mpfr-3.1.6-obj --build=x86_64-redhat-linux
make
make install

4、等待编译

Linux gcc源码安装_第1张图片
make完成.png
make install完成.png

5、编译完成

gcc版本查看.png

遇到的各种错误

  • 使用configure进行编译时:

      ../gcc-4.4.7/configure --prefix=/user/gcc-4.4.7/gcc-4.4obj --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++ --host=x86_64-linux
    

报找不到GMPMPFR

Linux gcc源码安装_第2张图片
编译找不到GMP与MPFR.png

解决:编译安装 GMP之后,使用 --with-gmp=指定 GMP路径:
Linux gcc源码安装_第3张图片
mpfr为NO.png

继续编译安装 MPFR之后,使用 --with-mpfr=指定 MPFR路径:
configure编译成功.png

  • configure过去了 但make报错:

make[2]: x86_64-redhat-linux-ar: Command not found
make[2]: *** [libiberty.a] Error 127

解决:因为主机上原有gcc了,使用gcc -v会看到当时gcc时configure的参数,里面有一个:--host=x86_64-redhat-linux,把这个改成--build=x86_64-redhat-linux该错误就不再出现了

  • configure过去了 但make报错:

configure: error: CC' has changed since the previous run: configure: former value:x86_64-redhat-linux-gcc'
configure: current value: ……

解决:因为修改了configure参数,但重新执行时没有删除gcc-4.4obj目录下文件导致有历史残留存在。把gcc-4.4obj目录下文件rm -rf *之后再执行configure……make

  • configure过去了 但make报错:
    libgcc找不到.png

解决:将gmpmpfrlib路径添加到环境变量LD_LIBRARY_PATH中:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/user/mpfr-3.1.6/mpfr-3.1.6-obj/lib:/user/gmp-6.1.0/gmp-6.1.0-obj/lib
  • make install报错
    Linux gcc源码安装_第4张图片
    找不到fixincludes.png

解决make过程中被中断导致,重新执行make

参考文章

Linux GMP源码安装
Linux MPFR源码安装
redhat AS 4手动编译gcc 4.4
在 Ubuntu 12.04 下编译 GCC 4.7(注意看评论)
安装gcc-4.7.1时遇到据说是很常见的make错误

如果有root权限,可以用rpm包快速进行安装:
Linux gcc rpm包离线安装

你可能感兴趣的:(Linux gcc源码安装)