默认是安装到 /usr/local/bin 目录下,指定目录 --prefix=/usr/local/gcc
然后输入 gcc -v ,会看到:
如果通过 源码 升级了gcc,没有升级动态库则在运行或者编译某些软件时有可能粗碰出现 /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found 的错误。
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
如果老版本的 gcc 如5.4等,可能是没有这么多的动态库信息。
运行:`find / -name "libstdc++.so*"`
我的系统因为之前通过命令行安装过 gcc 7.1 版本,因为能查找到比较多的动态库滑陪文件,
/home/pyzhang/SPEC/SPEC2017/benchspec/CPU/502.gcc_r/data/refrate/input/gcc-pp.c
删掉之前的gcc本地安装目录辩州闷/home/pyzhang/package/gcc-9.3.0
新建目录/携弯home/pyzhang/package/gcc-9.3.0-fortran
cd gcc源迹核码包
mkdir build &&cd build
../configure -enable-checking=release -enable-languages=c,c++,fortran -disable-multilib --prefix=/home/pyzhang/package/gcc-9.3.0-fortran
make -j64 &&make install
挂载镜像文件 SPEC_CPU2006v1.1.iso
sudo mount -o loop SPEC_CPU2006v1.1.iso /home/pyzhang/SPEC/SPEC2006/
sudo mount -t iso9660 SPEC_CPU2006v1.1.iso /home/pyzhang/SPEC/SPEC2006/
静态编译2017
runcpu --config=myconfig-x86.cfg --action=setup --size=test --tune=base --noreportable --iterations=1 intrate
1.下载GCC源码:wget ftp://mirrors.kernel.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.gz
2.解压:
tar -zxvf gcc-5.2.0.tar.gz
3.下载编译所需依赖项:
cd gcc-5.2.0//进入解包后的gcc文件夹
./contrib/download_prerequisites//下载依赖项
cd .. //返回上层目录
4.建立编译输出目录:
mkdir gcc-build-5.2.0
5.进入输出目录,执行以下命令,并生成makefile文件:
cd gcc-build-5.2.0
../gcc-5.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
6.编译:
make -j4
接下来就是等待了,整个过程大约40分钟左右。
PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,
要是莫名终止了,后面麻烦事也不少。切记编译时当前目录剩余空间要最少4G以上,否则会编译失败
7.安装:
编译结束以后,我们就可以执行安装了:
make install
8.检查版本:
gcc --version
或gcc -v
7.切换GCC到新版确定新安装的GCC的路径,一般默认在/usr/local/bin下。
可以先updatedb,然后locate gcc-4.8|tail找一下ls /usr/local/bin | grep gcc添加新GCC到可选项,
倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了手芦
update-alternatives --install /usr/bin/gcc x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 40
之后,你需要把usr/bin/目录下的gcc文件删除掉或者避免意外发生,可以把它命名为gcc.bak。
这里需要说明的,实际上你在用gcc -v查看当前版本时,就一直使用的usr/bin/gcc。
而ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/bin/gcc的目的就是为了生成gcc版本5.2的。
此步骤完整 *** 作如下:
mv /usr/bin/gcc /usr/bin/gcc.bak
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 /usr/bin/gcc
8.确认当前版本已经切换为新版gcc -v我这里用ssh远程的,发现版本没变谨历,断开重练下,重新生成会话后发现变成了5.2了祥薯搜!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)