ubuntu 20.04 lts 编译gcc12
这里默认你系统已经安装了gcc,没安装的运行下面的指令
$ sudo apt install -y build-essential
先准备编译环境
$ sudo apt install -y git libmpc-dev flex
git 可以从gcc官网代码仓库clone gcc源代码
$ git clone git://gcc.gnu.org/git/gcc.git gcc && pushd gcc/
配置编译环境
我是64bit环境需要使用 --disable-multilibx
$ ./configure --prefix=/usr/local/gcc12 --with-system-zlib --disable-multilib
$ make -j6 # 编译,很耗时
$ sudo make install # 安装到 /usr/local/gcc12
将 /usr/local/gcc12/bin
下的可执行程序全都软链接到 /usr/bin/
$ sudo ln -sf /usr/local/gcc12/bin/gcc /usr/bin/gcc-12
$ sudo ln -sf /usr/local/gcc12/bin/g++ /usr/bin/g++-12
$ sudo ln -sf /usr/local/gcc12/bin/gcc-ar /usr/bin/gcc-ar-12
$ sudo ln -sf /usr/local/gcc12/bin/gcc-nm /usr/bin/gcc-nm-12
$ sudo ln -sf /usr/local/gcc12/bin/gcc-ranlib /usr/bin/gcc-ranlib-12
$ sudo ln -sf /usr/local/gcc12/bin/gcov /usr/bin/gcov-12
$ sudo ln -sf /usr/local/gcc12/bin/gcov-dump /usr/bin/gcov-dump-12
$ sudo ln -sf /usr/local/gcc12/bin/gcov-tool /usr/bin/gcov-tool-12
配置多版本GCC共存
因为系统中原来就有个gcc9,咱来配个多版本共存环境
以下命令为每个版本配置替代版本,并将优先级与之关联。auto mode版本是优先级最高的版本,在本例中配成 gcc-12
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave /usr/bin/gcov gcov /usr/bin/gcov-12
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 120
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90
以后,如果要更改默认版本,请使用以下update-alternatives命令:
$ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-12 120 auto mode
1 /usr/bin/gcc-12 120 manual mode
2 /usr/bin/gcc-9 90 manual mode
Press <enter> to keep the current choice[*], or type selection number:
系统将为您提供Ubuntu系统上所有已安装的GCC版本的列表。输入您要用作默认版本的版本号,然后按Enter。
该命令将创建指向GCC和G ++特定版本的符号链接。