0%

老旧服务器编译安装高版本GCC

因为安装和编译很多东西都需要高版本的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
2
make -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
2
export 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来查看版本了,结束。