web-dev-qa-db-ja.com

Linux MintにGCCの最新の安定リリースをインストールする方法は?

Linux Mint 17.3に最新バージョンのGCC(GNUコンパイラコレクション)をインストールしたい。現在 g++ --versionは4.8.4を返しますが、最新の安定版リリースは5.3です。

8
becko

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の前にそれを前提条件としてください。グーグルを学びます...よりハードな検索を試みます...

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 +、MPFR 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 not found!」のようなエラーメッセージが表示される場合あなたはそれを修正するために以下を行うことができます:

apt-get install zlib1g-dev
3
GAD3R

最新のものが常に出てくるので、私は最新のものを何にするべきか確信が持てません。ただし、この方法でそれらのいずれかをインストールできます。

例として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

より高い優先度(この場合は20)のgcc-8/g ++-8を選択する場合は、以下も行う必要があります。

Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8
1
Zhi Yuan

真実は、私が単に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"
0
Lelanthran