最近在打一个比赛,要求满足以下运行环境:

  • 操作系统:Linux version 4.19.91-23.al7.x86_64
  • 编译器:gcc-8.3.0 (clang的编译结果可能与gcc稍有不同)
  • cmake: 3.20.52
  • make: GNU Make 3.82

记录一下我的配置过程,帮助大家少走坑!

注:如果之前用apt装过这些包,可能需要删除掉,然后再替换成要安装的版本。我手动安装的软件都在/opt目录下,并且均在root用户下进行操作。另外,本文前置条件是已知vim的使用方法,其他的按照本文的步骤配置就没问题了。

1. 查看Linux版本 5.4.0

Ubuntu终端查看系统版本内核信息:https://www.jianshu.com/p/c219f3a9dc81

cat /proc/version ,显示如下:

Linux version 5.4.0-89-generic (buildd@lgw01-amd64-034) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #100~18.04.1-Ubuntu SMP Wed Sep 29 10:59:42 UTC 2021

当前版本5.4.0 > 要求版本4.19.91,没问题。

2. 安装make 3.82

首先要apt install make,因为在安装make时需要用make来编译(没想到吧,这么坑)。

参考:https://tw511.com/a/01/16317.html

wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz #下载make-3.82
tar zxvf make-3.82.tar.gz #解压出的目录为make-3.82
mv make-3.82 make-3.82-installer #改个名字
cd make-3.82-installer
vim glob/glob.c #编辑

将/make-3.82/glob/glob.c中的第211#if !defined __alloca && !defined __GNU_LIBRARY__注释、第232#endif注释,如下所示:
在這裡插入圖片描述

./configure --prefix=/opt/make-3.82
sh build.sh
make #如果这里找不到make命令,是因为之前没有apt install make
sudo make install #自动生成目录make-3.82
vim /etc/profile.d/make.sh #创建和编辑make.sh

创建make.sh,内容如下:

export MAKE_HOME=/opt/make-3.82
export PATH=$PATH:$MAKE_HOME/bin

最后卸载之前的装的make,并且source新的make安装路径:

apt remove make -y #删除之前apt装的make,其位置在/usr/bin/make
source /etc/profile
make --version # 显示GNU Make 3.82,成功!

小结:make安装有点麻烦,先得用apt装一下新版本make,最后还得用apt删除一下新版本make,才能留下自己手动装的老版本make。

3. 安装gcc 8.3.0

参考:https://blog.csdn.net/NNNathan/article/details/117928360

wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz #下载gcc-8.3.0.tar.gz
tar zxvf gcc-8.3.0.tar.gz 
mv gcc-8.3.0 gcc-8.3.0-installer
cd gcc-8.3.0-installer
./contrib/download_prerequisites #安装依赖库,比如gmp、mpfr、mpc

mkdir build
cd build

#–enable-languages表示让gcc支持哪些些语言
#–disable-multilib不生成编译为其他平台可执行代码的交叉编译器
#–enable-checking=xxx来增加一些检查,或用–disable-checking生成的编译器在编译过程中不做额外检查
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --prefix=/opt/gcc-8.3.0

make -j 4 #4个处理器并发编译,这里需要编译较长时间
make install #安装到/opt/gcc-8.3.0

vim /etc/profile.d/gcc.sh #创建和编辑gcc.sh

2023.2.28 更新 如何解决依赖库无法安装的问题
./contrib/download_prerequisites #安装依赖库,比如gmp、mpfr、mpc

这一步出现下载失败的问题

2023-02-28 16:44:24 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925] -> “./mpc-1.0.3.tar.gz” [1]
2023-02-28 16:44:28 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291] -> “./isl-0.18.tar.bz2” [1]
gmp-6.1.0.tar.bz2: 失败
sha512sum: 警告:1 个校验和不匹配
error: Cannot verify integrity of possibly corrupted file gmp-6.1.0.tar.bz2

如何解决?参考解决方法

需要替换下载网址:

vim contrib/download_prerequisites

将该文件里的base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/'替换为:base_url='http://mirror.linux-ia64.org/gnu/gcc/infrastructure/',即将不存在的服务器地址替换为镜像服务器地址。

然后./contrib/download_prerequisites再次安装即可,如果还失败,是因为网络不稳定,就把失败的包给删掉,再重新多试几次。


创建gcc.sh,内容如下:

export GCC_HOME=/opt/gcc-8.3.0
export PATH=$PATH:$GCC_HOME/bin

最后卸载之前的装的gcc,并且source新的gcc安装路径:

apt remove gcc -y #删除原来的gcc,其位置在/usr/bin/gcc
source /etc/profile
gcc --version #显示gcc (GCC) 8.3.0,成功!

4. 安装cmake 3.20.5

如果用cmake --version查看到的版本低,则先卸载老版本:apt remove cmake

wget https://cmake.org/files/v3.20/cmake-3.20.5-linux-x86_64.tar.gz #下载cmake-3.20.5
tar zxvf cmake-3.20.5-linux-x86_64.tar.gz
mv cmake-3.20.5-linux-x86_64 cmake-3.20.5 #把解压出的目录名字改短一点(这个随意)
vim /etc/profile.d/cmake.sh #创建和编辑cmake.sh

创建cmake.sh文件,内容如下:

export CMAKE_HOME=/opt/cmake-3.20.5
export PATH=$PATH:$CMAKE_HOME/bin

最后source一下,然后检查版本

source /etc/profile
cmake --version #显示cmake version 3.20.5,成功!
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐