从源码编译安装GCC

Ubuntu系统自带的GCC版本通常无法跨大版本升级,因此当需要较新的c++语言标准时,需要拉取源码编译安装最新GCC。

拉取源码

这里选择拉取分支releases/gcc-12且不拉取历史记录,可加快下载速度

1
2
3
mkdir gcc
cd gcc
git clone -b releases/gcc-12 --depth=1 https://github.com/gcc-mirror/gcc.git gcc-src

编译、安装

新建build目录

GCC不允许在源码目录内进行编译,因此在gcc-src目录外新建一个用于编译的文件夹

1
2
mkdir gcc-build
cd gcc-build

安装依赖

1
sudo apt-get install flex libmpfrc++-dev libmpc-dev libgmp-dev gcc-multilib

配置

这里自定义了安装路径和启用的语言支持

1
./../gcc-src/configure --prefix=$HOME/gcc/install/gcc-12 --enable-languages=c,c++

编译并安装

1
2
make -j8
make install

设置系统默认gcc

使用update-alternatives工具管理系统内多个版本gcc

注册系统内所有gcc 使用方法

1
update-alternatives --install <link> <name> <path> <priority> [--slave link name path] ...

其中priority必须为整数,--slave表示当选择当前版本时,其它软件的版本匹配关系

1
2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 --slave /usr/bin/g++ g++ /usr/bin/g++-11
sudo update-alternatives --install /usr/bin/gcc gcc $HOME/gcc/install/gcc-12/bin/gcc 12 --slave /usr/bin/g++ g++ $HOME/gcc/install/gcc-12/bin/g++

添加环境变量

1
echo "export LD_LIBRARY_PATH=~/gcc/install/gcc-12/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc

验证

1
gcc --version
Licensed under CC BY-NC-SA 4.0