问题
由于源码安装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、等待编译
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
报找不到GMP与MPFR:
编译找不到GMP与MPFR.png
解决:编译安装GMP之后,使用--with-gmp=指定GMP路径:
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
解决:将gmp与mpfr的lib路径添加到环境变量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报错
找不到fixincludes.png
解决:make过程中被中断导致,重新执行make
参考文章
如果有root权限,可以用rpm包快速进行安装:
Linux gcc rpm包离线安装