我虚拟机上安装的是CentOS7系统,选的是最小化安装,网络适配器是NAT而不是桥接模式。
他强任他强,轻风抚山岗。
总的来说,逢山开路,遇水搭桥,关键不放弃,本人第一次搭也遇到很多错误, 解决方法就是把错误信息百度一下。
本文把大部分可能会出问题的地方指出来了,如果有遗漏,可按上述方法解决,毕竟我搭好了,你肯定也可以。
在装好系统后,首先要解决的是网络问题。对于NAT来说很简单,只要修改一个值即可:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
最后面的ifcfg-ens33根据系统可能不同。打开文件后,最后一行有一个ONBOOT=no, 改成yes即可
我们要怎样得到安装包呢?用yum吗?不,yum命令是安装不了最新的包的。所以我们一般先安装一个wget工具:
yum install wget
有了下载程序,就是下载我们需要的包了,我们需要什么?不止是gcc,还有它的三个依赖gmp / mpfr / mpc
gmp下载网址:http://ftp.gnu.org/gnu/gmp/
这里面有很多版本,选一个自己喜欢的(个人一般选最新的,毕竟时代在进步),如gmp-6.1.2.tar.bz2,那么该版本的下载地址就是上面的网址后面加上要下载的包的名字如: http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2 下载如下:
wget http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2
wget会把安装包下载到当前所在目录下。其它安装包下载和上面一样。包文件地址如下:
mpfr : 镜象 http://ftp.gnu.org/gnu/mpfr/ 或者官网:http://www.mpfr.org/mpfr-current/
mpc : http://ftp.gnu.org/gnu/mpc/
当然还有最重要的 gcc 包:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
关于gcc,不看不知道,一看吓一跳,CentOS7 yum命令安装的才四点几版本,而最新版已经是8.0.1了。。。= =
(ps,本人虚拟机网速不知为何很卡,所以这三个包都是用windows下载的,之后用rz命令上传到Linux,要使用rz命令,首先要yum install lrzsz,其次要使用如secureCRT之类的工具连接到你的虚拟机,才可以进行传输,内容太多此处不多说,反正上面的方法是一定ok的)
我们下载下来的包可能各种类型都有,".tar.*"结尾的,".zip"结尾的,
对于点tar点xxx的包,一般都用tar命令解压,但当有tar是没用的,如,有一个包是 "xxx.tar.bz2",我们用tar解压时,会报错(因为我们是最小化安装,解压bz2的工具是没有的)。我们可以根据报错,看到系统需要一个bzip2的工具,很简单,
yum -y install bzip2
即可,对于其它类型的包,处理过程大都如上。
对于zip结尾的包,用yum命令安装一个unzip即可:
yum -y install unzip
upzip或tar的具体用法可参考——https://www.cnblogs.com/zhenghaonihao/p/6100657.html, 里面讲得很全了。这里就讲一个通用用法, 即 tar -xvf 包名 ,一般的包都可以这么解压。
之后我们就可以安装这些包了, 首先我们要安装gmp 包(注意,顺序不能错,因为后要的包要依赖前面的包,所以前面的没装好,后面的会报错)。
先解压出gmp包,我们会发现在gmp包边上多了一个gmp-5.0.1的文件夹(版本号是我编后,后面三个数字根据版本的不同而不同)。下面我们就要讲一下安装的通用流程了,我们在安装前一般要先创建一个临时文件夹,一些中间输出要放在这个文件夹中。一般我们进入gmp-5.0.1,在里面创建一个tmp文件夹。然后执行:
../configure --prefix=/usr/local/gmp-5.0.1
--prefix后面跟着的就是你要把gmp安装到的路径, 这个路径需要记一下,因为后面要用。
此时,我们的第四难才显现出来。你是没法完成配置的,因为你没有gcc库,对没错,你手动安装gcc的前提是你要安装了gcc,是不是很扯。没关系,这个很容易解决,我们用yum下载一个低版本的暂用一下。
yum install gcc
yum install gcc-c++
下载gcc-c++的原因是,后面安装gcc的时候要用。
安装完后就好了吗?不,还会报错,他会提示你要安装一个叫“m4”的程序,还是没关系,照旧用yum下载即可:
yum -y install m4
之后我们的configure就可以成功了,然后依次执行:
make
make install
即可。
安装mpfr和mpc和上面差不多,都是先解压,后创建临时文件夹,之后configure ,之后是make 和make install。不过configure的语句有些不同。
mpfr的confiigure操作:
../configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-5.0.1
注意后面跟的地址就是我们gmp安装的地址
mpc的configure操作:
../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5
最后,我们终于可以安装gcc了。但别太急,安装前先配置一个路径,我们:
vim /etc/profile
在最后一行加上:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.0.3/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.5/lib
记住后面三个路径要换成你自己的。配置完后执行
source /etc/profile
让修改生效。
真的,我们要开始安装gcc 了,同样是解压,创建tmp文件夹,cd进去后执行:
../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.3
注意三个路径换成你自己的。最后也有些不同:
make -j4
make install
安装过程会很久,本人装了近两个多小时才ok。完成后gcc -v看下版本。虽说过程艰难,但成功后还是很开心的。
rpm -q gcc
此时会显示gcc的包名,一般是4点几版本的。
rpm -e 包名
把包名整个复制在-e的后面。但Enter之后发现删不掉,有依赖,即gcc-c++,它会提示完整的依赖包名。
那么ok,把gcc-c++先卸掉即可:
rpm -e 依赖包名
删掉后再次删除gcc,就可以成功
但此时,我们运行C++程序时很可能出错,
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
这是因为原来的C++被删除,libstdc++.so.6的指向消失了。我们把原来的软链接删掉,建立新的软链接即可,怎么查找新的软链接应该指向谁呢?可用以下命令:
find / -name "libstdc++.so*"
找到路径与图中路径类似的路径(关键是stage1-x86_64-pc这几个字符),把最新版本6.0.25copy到 /usr/lib64/路径下,
cp /usr/local/donz/language/cpp/install/gcc-8.1.0/tmp/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25
/usr/lib64/
删除原来的/usr/lib64/libstdc++.so.6软链接:
rm /usr/lib64/libstdc++.so.6
建立新的软链接即可
ln -s libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
oik,一切结束。