ubuntu源码安装gcc8.2.0

ubuntu源码安装gcc8.2.0,第1张

因为 seastar 最新版要求 gcc>8.0 版本,所以需要源岩让谈码安装 gcc 8.2.0

默认是安装到 /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了祥薯搜!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12482462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存