Linux安装最新版的gcc13.1.0编译器,支持c++20、23
最近在写c++20的代码,所以需要升级支持c++20及23的编译器,貌似gcc11就已经支持了c++20了,但是我这里选择了最新的13.1版本。本文全程实操,上机验证通过。
-
查看gcc版本
gcc -v gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
-
去GUN官网查看最新的gcc版本Index of /gnu/gcc
-
下载最新版本,可以在线下载,也可以去官网下载包拖到linux系统下,看到网上说Ubuntu22.10版本可以直接在线安装apt-get install gcc-13,具体不清楚,我用的是20.04:
wget http://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.gz
-
解压:
tar xf gcc-13.1.0.tar.gz
-
进入目录,安装组件,时间有点久,执行完没反应,因为在下载包,所以不要看没反应直接ctrl+c:
cd gcc-13.1.0/ ./contrib/download_prerequisites
安装组件时,可能由于网络问题导致组件安装失败,这时候需要删除失败组件包,重新安装。
-
创建构建目录:
mkdir build && cd build
-
执行安装并指定安装位置,不指定会安装在/usr/bin/目录下
../configure --prefix=/home/ubuntu2004/gcc131 --enable-threads=posix -enable-checking=release -enable-languages=c,c++ -disable-multilib
-
编译,我这里用sudo提升权限编译的,不用我会编译失败,-j8采用8线程,但是感觉没啥效果,我这里编译了30多分钟:
sudo make -j8
-
安装:
sudo make install
-
到我们指定的安装文件夹里配置环境变量:
cd /home/ubuntu2004/gcc131 sudo vim gcc131.env
写入下面内容,写完后:wq保存退出
export GCC_ME_HOME=/home/ubuntu2004/gcc131 PATH=$GCC_ME_HOME/bin:/usr/local/bin:$PATH export PATH LD_LIBRARY_PATH=$GCC_ME_HOME/lib:$GCC_ME_HOME/lib64:/usr/local/lib:/usr/local/lib64:/usr/lib64:/lib64:$LD_LIBRARY_PATH export LD_LIBRARY_PATH export CC=$GCC_ME_HOME/bin/gcc export CXX=$GCC_ME_HOME/bin/g++
-
在你用户~目录下更改.bashrc文件,设置命令启用gcc13
vim .bashrc alias gcc13='source /home/ubuntu2004/gcc131/gcc131.env'
设置完成bash上输入gcc13来使用,可以使用gcc -v来查看当前gcc版本。
还可以提升新安装的编译器优先级,这样就不会每次重启系统都要执行gcc13来使用了
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 20 --slave /usr/bin/g++ g++ /usr/bin/g++-13 // 注意路径,如果你是像我一样安装到其他路径,那么需要修改一下路径名
当然这样为了兼顾你使用之前旧的编译器,如果你不想使用旧的编译器可以直接删除旧的编译器。
-
如果经过上述操作,gcc -v还是旧的版本,需要重启系统。重启还是不行,建议删除包,重新解压安装。
吐槽:tmd,c站某些用户不要个face了是吧,为了一点流量、点赞,瞎tmd抄,抄也行,你倒是上机验证一下啊,那tmd都执行不了!我就是不上机操作,有些错误看都看的出来执行不了。还硬抄。真耽误事,看c站搞了我好几个小时没安装成功。
参考博文:gcc 13.1 编译安装