因为安装和编译很多东西都需要高版本的GCC,所以折腾了一下高版本的GCC。
前情提要
继之前帮老师跑代码,登老师的账号使用学院服务器之后,在各种机缘巧合之下我也有了我自己的账号(其实是因为这太服务器太老了没有人用,所以我也很轻易的弄到了个账号)。虽然很老,但是因为没有人用,所以相当于我独占48核256G,那还是相当不错了的。本来之前还有两张1080Ti,可惜才用了几个月就坏了一张,剩下这张估计也快了……
虽然我有了账号,但是也是没有root权限的,所以不能用apt安装软件,而且在运行编译好的二进制文件的时候还报了glibc版本过低,自己编译的话又是gcc版本过低,甚至有些pip的需要编译安装的包都编译不了,所以我认为需要编译一套高版本的gcc工具链了。
选择GCC版本
我对gcc了解也不多,也不知道每个版本的区别,唯一能参考的就是各编译器对C++23的支持情况,或者按照习惯,不选最新的大版本,选次新的大版本的最终版。最后我选择了14.3
下载GCC源码
来清华源下载对应版本的源码然后解压
下载其他依赖
进入我们刚刚解压出来的目录,我这里就是gcc-14.3.0
1
cd gcc-14.3.0/
然后运行下面的脚本下载依赖1
./contrib/download_prerequisites
如果下载失败,可以根据失败信息和报错手动下载包然后移动到对应目录
配置编译参数
接下来执行./configure
,这个需要设置很多参数,具体的我也不知道,可以使用gcc -v
查看系统自带的gcc的编译参数,全部复制过来,看见认识的需要修改就按需修改,或者丢去问问AI,这里就不展示过多的参数了。
编译安装
接下来就是漫长的编译和安装了1
2make -j48
make install
简单说一下-j
是同时编译的线程数,一般设为cpu核心的2倍,服务器的cpu核心是48核,我没有设为2倍。
然后make install
网上一般都是要加sudo
的,是否要加sudo
取决于之前配置编译参数步骤中,--prefix
指定的目录是否有权限。
设置环境变量
然后编辑~/.bashrc
,添加环境变量,我编译的是gcc-14.3.0
,安装目录是/opt/gcc-14.3.0
,同样换成你们自己的目录。1
2export LD_LIBRARY_PATH=/opt/gcc-14.3.0/lib64:$LD_LIBRARY_PATH
export PATH=/opt/gcc-14.3.0/bin:$PATH
然后保存退出,source ~/.bashrc
,然后就可以使用gcc -v
来查看版本了,结束。