$ sudo apt search gcc-12
Sorting... Done
Full Text Search... Done
$ uname -a
Linux Han 5.10.81.1-microsoft-standard-WSL2 #1 SMP Mon Nov 22 18:52:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
我正在使用默认的sources.list文件,想要安装gcc-12,但是在镜像源中找不到它,我该怎么办!
$ sudo apt search gcc-12
Sorting... Done
Full Text Search... Done
$ uname -a
Linux Han 5.10.81.1-microsoft-standard-WSL2 #1 SMP Mon Nov 22 18:52:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
我正在使用默认的sources.list文件,想要安装gcc-12,但是在镜像源中找不到它,我该怎么办!
在Ubuntu 20.04中无法获取gcc-12,因此我们需要从源代码进行编译。以下是我从此视频借鉴的步骤:
$ git clone https://gcc.gnu.org/git/gcc.git gcc-source
$ cd gcc-source/
$ git branch -a
$ git checkout remotes/origin/releases/gcc-12
请注意,从源代码目录中运行 ./configure
不受支持,详见这里。
$ mkdir ../gcc-12-build
$ cd ../gcc-12-build/
$ ./../gcc-source/configure --prefix=$HOME/install/gcc-12 --enable-languages=c,c++
缺失的库将在上述./configure
输出中显示,逐个搜索并安装。
$ apt-cache search MPFR
$ sudo apt-get install libmpfrc++-dev
$ apt-cache search MPC | grep dev
$ sudo apt-get install libmpc-dev
$ apt-cache search GMP | grep dev
$ sudo apt-get install libgmp-dev
$ sudo apt-get install gcc-multilib
$ ./../gcc-source/configure --prefix=$HOME/install/gcc-12 --enable-languages=c,c++
另一种选择是运行download_prerequisites脚本。
$ cd ../
$ cd gcc-source/
$ ./contrib/download_prerequisites
$ ./../gcc-source/configure --prefix=$HOME/install/gcc-12 --enable-languages=c,c++
$ make -j16
仍然缺少flex:
$ sudo apt-get install flex
$ ./../gcc-source/configure --prefix=$HOME/install/gcc-12 --enable-languages=c,c++
$ make -j16
$ make install
另一种方法是使用Ubuntu 22.04,在那里可以使用gcc-12。在Ubuntu 22.04中,可以使用apt
安装gcc-12:
$ sudo apt install gcc-12
./../gcc-source/configure
时,它没有抱怨缺少 flex,直到 make -j16
阶段才出现了问题。 - lifangsudo update-alternatives --install /usr/bin/gcc gcc ~/install/gcc-12/bin/gcc 120 --slave /usr/bin/g++ g++ ~/install/gcc-12/bin/g++ --slave /usr/bin/gcov gcov ~/install/gcc-12/bin/gcov
命令可以完成此操作(假设 ~/install/gcc-12
中已安装了 gcc-12)。更多信息请参考 https://linuxize.com/post/how-to-install-gcc-compiler-on-ubuntu-18-04/。 - lifanggcc-source
文件夹大小为1.9 GB,而gcc-12-build
最终占用了8.2 GB的空间。您还需要足够的交换空间(如果您没有交换分区,请参见https://askubuntu.com/a/299441以了解如何创建交换文件),否则构建可能会因信号9而失败。 - Preminsterbrew install gcc
以获取默认的GCC(目前为11)或执行brew install gcc@12
以获取GCC-12。
请注意,这可能需要编译缺少的依赖项。error: 1604 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
Failed during: git fetch --force origin refs/heads/master:refs/remotes/origin/master```
- mLstudent33如果您只是为了64位添加,那么您需要在配置语句的末尾添加“--disable=multilib”。
windows-subsystem-for-linux
: Ubuntu 22.04应该有一个适用于gcc-12版本的......,因为默认的Ubuntu已经提供了https://packages.ubuntu.com/jammy/g++-12。..... Ubuntu 22.04将在明天发布。 - Knud Larsenapt search
时需要使用sudo
。 - tripleee