在 Debian 12 Bookworm 上安装 gcc 13
省流:自己编译了一遍
我需要编译一个使用 C++20 特性的程序(具体来讲是 <format>),需要 gcc > 13。现在的系统是 Debian 12 “bookworm” stable,默认源没有这个包。
查找互联网资料,得知可以设置 backports 软件源,但我设置了却仍然找不到 gcc-13 的包。于是索性自己编译一个,正好看看新电脑什么水平。
首先下载源码。
wget https://gcc.gnu.org/pub/gcc/releases/gcc-13.3.0/gcc-13.3.0.tar.gz
tar -xvzf gcc-13.3.0.tar.gz
cd gcc-13.3.0
安装依赖,配置选项。这里设置产物后缀为 -13,并且通过 --disable-multilib 禁用了我暂时用不到的交叉编译功能。
./contrib/download_prerequisites
./configure --disable-multilib --enable-languages=c,c++ --program-suffix=-13
编译。我使用 8 线程并行
make -j8
大概花了半个多小时编译完成。接着安装并注册:
sudo make install
可以用 update-alternatives 工具注册不同的 gcc 版本,数字越大优先级越高。比手动修改软链接要文明一些。
sudo update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-13 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-13 50
# 这个是原来的 gcc 12
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 40
➜ ~ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/local/bin/gcc-13 50 auto mode
1 /usr/bin/gcc-12 40 manual mode
2 /usr/local/bin/gcc-13 50 manual mode
Press <enter> to keep the current choice[*], or type selection number:
➜ ~ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/13.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-multilib --enable-languages=c,c++ --program-suffix=-13
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.3.0 (GCC)
本来以为会编译很久很久,只能说换了新电脑还是不太一样。