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
|
验证