如何在Linux Mint中安装最新稳定版本的GCC?


8

我想在Linux Mint 17.3中安装最新版本的GCC(GNU编译器集合)。当前g++ --version返回4.8.4,而最新的稳定版本是5.3。


通常可以向后移植较新的版本,但这也不是一件容易的事。一种替代方法是从源代码进行本地安装。从清洁的角度来看,最好是使用backport。
Faheem Mitha

还有另一种安装方式,可能不是打包方式吗?
becko

是的,正如我上面所说,可以选择本地安装。但是您需要小心,之后才能干净地卸载它。构建软件包是一个比较困难的过程,但是从维护的角度来看,这更容易,更清洁。
Faheem Mitha

Gcc的最新版本9.2作为源代码分发,如果主持人未删除此注释,则您可能会花些时间在其原始网站gcc.gnu.org上阅读howto 。恕我直言,没有合理理由删除了先前的答案。
bbaassssiiee

Answers:


8

您的Linux Mint预先安装了GCC软件包。因此,首先我建议您通过在终端中键入以下命令来检查软件包是否已存在于系统中。

apt-cache search gcc

如果您没有任何此类软件包,请首先在终端中使用以下命令,然后添加以下存储库:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

然后使用下一个命令:

sudo apt-get update
sudo apt-get install g++-4.7 c++-4.7

我们总是应该学习一些基本的东西;将其作为Linux之前的先决条件。.学习谷歌搜索...尝试做更多的艰苦搜索...


我为什么要安装g++-4.7,这是一个更低的版本比g++-4.8,这一点我已经有了?我想升级,而不是降级。
becko

那是4.8,您需要在apt-cache search gcc之前搜索可用的最新软件包,我为您提供了逻辑,但实际上您降低了我的评分gr8
Vinood NK Maheshwari

目前,这个答案似乎不连贯。请解释为什么OP希望安装v4.7而不是v5(最好不要刻苦学习辛苦工作的好处)。
agc

用4.9代替4.7,它可以工作。
Algoman'3

3

下载最新版本的gcc

wget http://www.netgull.com/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2

使用命令:tar -xjf解压缩文件

输入您刚刚解压缩的目录,在中输入$HOME/Downloads/gcc-5.3.0,然后键入命令:

./configure --disable-checking --enable-languages=c,c++,objc 
--disable-multilib --with-system-zlib prefix=/usr/bin/gcc-5.3

依赖性安装:构建GCC需要GMP4.2 +,MP​​FR 2.4.0+和MPC 0.8.0+,并且构建必不可少

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev
sudo apt-get install build-essential

安装C ++编译器

sudo apt-get install g++

下一个类型:

make 
sudo make install

编辑 如果你仍然得到这样的错误消息“zlib.h没有发现!” 您可以执行以下操作进行修复:

apt-get install zlib1g-dev

如果您有任何错误,请发表评论。我会更新。
GAD3R

为什么--disable-multilib
becko

错误:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko

链接已死。
einpoklum

1

我不确定自己应该是​​最新的,因为总是会有一些最新的。但是您可以通过这种方式安装其中的任何一个。

以gcc-8为例:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-8 g++-8
gcc-8 --version

如果要选择优先级更高的gcc-8 / g ++-8(在这种情况下为20),则还需要

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8

0

说实话,我实在太懒了,无法摆脱17.3-这对我有用。话虽如此,我仍然需要更新的gcc。为了针对不同的目标重复编译它,我需​​要修改并运行一个bash脚本(请参见下文)(我正在编写自己的玩具OS,因此必须使用专门生成的gcc)。

在下面的脚本中更改目录以匹配您拥有的目录。我将编译后的版本保存在自己的目录中,以便可以轻松在编译后的版本和系统的版本之间切换。我建议你这样做。您需要下载binutils-2.23.2以及您感兴趣的gcc版本(我在下面使用7.1.0)。将它们与以下脚本一起放入〜/ contrib目录。

您可能还希望将行“ --enabled-languages = c”更改为“ --enabled-languages = c,c ++,objc”-我的项目只需要C。另一个更改是PLATFORM的值。我使用“ i686-elf”,但对您不起作用(我在下面将其更改为适用于32位平台的内容)。您可以在64位平台上尝试使用“ x86_64-linux-gnu”。

出于好奇-我之所以这样构建它,是因为gcc构建过程曾经有一个错误,导致无法在源目录中进行重新构建。我不知道此错误是否仍然存在(我上次在4.8.0中遇到过),但是唯一的解决方法是,如果您要重建,则显式地在单独的目录中进行构建。

[编辑:执行GAD3R建议的上述依赖项的安装]

#!/bin/bash

function die() {
   echo $1
   exit 127
}


export PREFIX=/home/lelanthran/opt/cross
export TARGET=i686-linux-gnu
export PATH="$PREFIX/bin:$PATH"

pushd $PWD &> /dev/null
mkdir -p build-binutils
cd build-binutils
../binutils-2.23.2/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --with-sysroot \
   --disable-nls \
   --disable-werror || die "binutils/config error"
make           || die "binutils/make error"
make install   || die "binutils/make install error"

popd &> /dev/null

pushd $PWD &> /dev/null
mkdir -p build-gcc-7.1.0
cd build-gcc-7.1.0
../gcc-7.1.0/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --disable-nls \
   --enable-languages=c \
   --without-headers || die "gcc/config error"
make all-gcc                  || die "gcc/make all-gcc error"
make all-target-libgcc        || die "gcc/make all-target-libgcc error"
make install-gcc              || die "gcc/make install-gcc error"
make install-target-libgcc    || die "gcc/make install-target-libgcc error"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.