问题
由于源码安装MySQL5.7时,报主机gcc
版本过低,需要使用4.4及以上版本,使用gcc -v
查询现用gcc
版本为4.1。想要在主机上保留4.1与4.4两个版本。
流程
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、等待编译
5、编译完成
遇到的各种错误
-
使用
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之后,使用
--with-gmp=
指定GMP路径:继续编译安装MPFR之后,使用
--with-mpfr=
指定MPFR路径:-
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
报错:
解决:将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
报错
解决: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包离线安装