编译最新版本gcc

首先编译gcc我们需要安装gcc,一般直接包管理器安装就好了

sudo apt update
sudo apt install -y gcc g++
sudo apt install -y build-essential libgmp-dev libmpfr-dev libmpc-dev flex bison texinfo wget

下载最新GCC源码

https://ftp.gnu.org/gnu/gcc/ 找一下最新版本,例如截止到 2025-12-29 最新版本是 gcc-15.2.0

wget https://ftp.gnu.org/gnu/gcc/gcc-15.2.0/gcc-15.2.0.tar.gz
tar -xf gcc-15.2.0.tar.gz
cd gcc-15.2.0

拉取依赖

gcc-15.2.0# ./contrib/download_prerequisites

创建独立构建目录

gcc-15.2.0# mkdir build
gcc-15.2.0# cd build

配置编译参数

gcc-15.2.0/build# ../configure \
--prefix=/opt/gcc-15.2.0 \
--enable-languages=c,c++ \
--disable-multilib

开始编译

gcc-15.2.0/build# make -j$(nproc)

安装

gcc-15.2.0/build# sudo make install

到此安装成功去试试

/opt/gcc-15.2.0/bin# gcc -v
/opt/gcc-15.2.0/bin# g++ -v

如果没啥问题可以卸载原来老的gcc了(根据具体情况,你完全可以保留原有的gcc)

sudo apt uninstall gcc
sudo apt autoremove

使用新GCC,加下环境变量 .bashrc

# ==== custom GCC 15.2.0 ====
export GCC_HOME=/home/gaowanlu/local/gcc-15.2.0-bin
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib64:$LD_LIBRARY_PATH
export CC=$GCC_HOME/bin/gcc
export CXX=$GCC_HOME/bin/g++

改过后

source .bashrc
which gcc
which g++
gcc --version

对于cmake项目,通常我们会删掉老的build目录,CMake找gcc只会在第一次cmake时找,后面变了不会更新。

VSCode settings.json .vscode/settings.json

{
  "cmake.configureSettings": {
    "CMAKE_C_COMPILER": "/opt/gcc-15.2.0/bin/gcc",
    "CMAKE_CXX_COMPILER": "/opt/gcc-15.2.0/bin/g++",
    "CMAKE_CXX_STANDARD": "20"
  }
}

CMakeLists.txt

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

VSCode IntelliSense .vscode/c_cpp_properties.json

{
  "version": 4,
  "configurations": [
    {
      "name": "Linux",
      "compilerPath": "/opt/gcc-15.2.0/bin/g++",
      "cStandard": "c23",
      "cppStandard": "c++20",
      "intelliSenseMode": "linux-gcc-x64",
      "includePath": [
        "${workspaceFolder}/**"
      ]
    }
  ]
}

CMake 配置时通过命令行指定

mkdir -p build
cd build

cmake .. \
  -DCMAKE_C_COMPILER=/opt/gcc-15.2.0/bin/gcc \
  -DCMAKE_CXX_COMPILER=/opt/gcc-15.2.0/bin/g++

如需指定标准

cmake .. \
  -DCMAKE_C_COMPILER=/opt/gcc-15.2.0/bin/gcc \
  -DCMAKE_CXX_COMPILER=/opt/gcc-15.2.0/bin/g++ \
  -DCMAKE_CXX_STANDARD=20