Ubuntuで最新のGCCを使用するにはどうすればよいですか?


132

の最新バージョンでプログラムをコンパイルしたいgcc

Ubuntu 14.04にはgcc 4.8.2が付属していますが、4.9.0が利用可能です。さらに、パッケージとして利用可能ですgcc-4.9。私はそれをインストールしようとしました

sudo apt-get install gcc-4.9

しかし、それは言います

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

デフォルトのものとしてではなく、すでにインストールされているように見えますか?プログラムを構築するためにどのように利用しますか?


インストールするgcc-4.8場合は、を使用する必要がありますsudo apt-get install gcc-4.8gcc-4.9gcc-4.8gcc-4.7gcc-4.6すべてはであるUbuntuの主なレポ

1
@Duminduしかし、gcc-4.9具体的にどのように使用するのですか?
ニコライ・レショフ

他をアンインストールして4.9をインストールします。

2
@Dumindu待って、私が今やったことをやるように言ったの?動作していません。
ニコライ・レショフ

rootユーザーに切り替えますsudo su -。goto /usr/binを実行ls -l gcc*し、出力を実行してポストします。回答を投稿します。
αғsнιη

回答:


196

gcc-4.9を正しくインストールし、デフォルトのgccバージョンとして設定する最良の方法は次のとおりです。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

--slave、とg++、原因になりますg++と一緒に切り替わるようにgcc同じバージョンに、。ただし、この時点でgcc-4.9がで構成されている唯一のバージョンupdate-alternativesになるため、に4.8を追加しますupdate-alternatives。したがって、実際には、次を使用して代替手段があります。

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

次に、設定されているものを確認し、以下を使用して前後に変更できます。

sudo update-alternatives --config gcc

注:PPAリポジトリのインストールをスキップして使用することもできます/usr/bin/gcc-4.9-baseが、新しく更新されたツールチェーンを使用することをお勧めします。


GCC 5.xまたは6、パッケージ(およびそれに対応し、コマンドが)ちょうどと呼ばれているためにgcc-5gcc-6など、これが変更に起因しているGCCのバージョンスキーム 5.1は、最初のGCC 5のリリースで、そして将来の5.Xリリースバグ修正用です


@muruの編集に感謝します...以下で述べたように、私は約3日間非常に疲れていたため、更新の代替にはsudoが必要であり、スレーブの前に(-)を忘れたと思います。:)だから、ありがとう。
SudoSURoot

試してくださいsudo apt-get -f install
-SudoSURoot

4
これは完全に機能します。また、GCC 5をUbuntuで動作させる5ため4.9に代用してください。(私の開発チームは、メソッドに従って4.9と5の両方を並行して実行するようになりました。)ありがとう、+ 1!
CodeMouse92

2
@hwat今のところ動作するはずgcc-6です。
-edwinksl

1
これは何度か助けになりましたが、私はいつも忘れています-あなたが使うかもしれないGNUコンパイラコレクションの他のユーティリティに同じ解決策を適用することを忘れないでください!たとえば、GCOVは、バージョンが一致しないと文句を言い、誤ったデータを生成する可能性があります。
トビー

23

ツールチェーンテストビルドPPAを使用します

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

Ubuntu 14.04でGCC 4.9が完全に利用できるとはまだ思いません。基本パッケージ(gcc-4.9-base)およびGCC Go 4.9コンパイラー(gccgo-4.9)は使用可能ですが、他のフロントエンドは使用できません。理由はわかりません。


1
@SudoSURootそれはデフォルトとして設定されている場合と設定されていない場合がありますが、それは私の懸念ではありません(他の記事がそれを扱っています)。ただし、GCC 4.9のCおよびC ++フロントエンドは、公式リポジトリから純粋に14.04にインストールできます。これは、gcc-4.9-baseパッケージにバイナリフロントエンドが含まれておらず、含まれないためです。
ムル

基本パッケージについては正しいです。私の答えにあるように、PPAを使用しました。最初にコメントを投稿し、次に質問から前述の質問に回答しました... PPAを追加して4.9をインストールするだけでは、「gcc 4.9を使用する」ために必要な機能が有効にならないためです。質問に答えた後、コメントを削除する必要がありました。謝罪します。私の答えは、何に焦点を当てるべきかです。私は結論に飛びついた...そして断食にコメントした。私は専用サーバーを手に入れたので、実際に14.04を使用してかなり新しいです。私は、反対票を投じなかったことを確認するために功を尽くします。
SudoSURoot

@SudoSURoot大丈夫。そうであっても、OPがgcc-4.9またはのg++-4.9代わりに、gccまたはの呼び出しに問題がない限りg++、代替を更新しないことに固執します。
ムル

私は完全に理解しています。しかし、多くの$(which gcc)や$(which g ++)などを使用するAndroidシステムを構築します。そのため、使用するバージョンに常にデフォルトを設定する必要があります。カーネルコードの一部がホストgcc-4.8でコンパイルされないため、更新する必要がありました。私はちょうど私のために働いたことを繰り返しました。思い出させてくれてありがとう...私が編集で言ったように、最後のコメントから、私はそれを修正するつもりであるなら、時期尚早に反対票を投じたかもしれません。これらを投稿したとき、私は2、3日間カーネルソースで作業していました。誰もが彼らの方法を持っています...私はちょうど私の答えをより徹底的に見つけた質問が少ない
-SudoSURoot

最新のパッケージはgcc-7 ATM
Geek長老

5

Ubuntu 16.04以降

デフォルトのリポジトリからUbuntu 18.04にgcc 7.0をすでにインストールできます。Ubuntu 17.10、18.04、および18.10にgcc-7をインストールするには、ターミナルを開いて次のように入力します。

sudo apt install gcc-7 

Ubuntu 18.04以降にgcc-8をインストールするには、ターミナルを開いて次のように入力します。

sudo apt install gcc-8

Ubuntu 19.04以降にgcc-9をインストールするには、ターミナルを開いて次のように入力します。

sudo apt install gcc-9

gcc-7は、ppa:jonathonf / gcc-7.1からUbuntu 16.04にインストールできます。

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

pcc:jonathonf / gcc-8.0からUbuntu 16.04にgcc-8をインストールできます。

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

3

特にgcc 4.9を呼び出すにgcc-4.9は、コマンドプロンプトでを使用します。

インストールしたすべてのgccバージョンは、最後にハイフンとバージョン番号を追加することで個別に呼び出すことができますgcc。あなたの場合、gcc-4.8そしてgcc-4.9利用可能でなければなりません。ターミナルで、gcc-(ハイフンに注意して)とプッシュタブを2回入力して、他のバージョンがインストールされているかどうかを確認します。

デフォルトのgccはおそらく4.8であることに注意してください。(gcc -vこれを確認するために使用します。)デフォルトのリポジトリからgcc-4.9をインストールした場合、update-alternativesエントリが追加されなかったため、残念ながらデフォルトの変更は簡単ではありません。デフォルトの変更方法に興味がある場合は、この質問への回答を参照してください。


どのようにメイクやおそらく他のビルドインフラに頼るプロジェクトがでビルドI作るのですgcc-4.9代わりにgcc
ニコライ・レショフ14

1
ビルドシステム全体でgcc-4.9が使用されていることを確認する最良の方法は、デフォルトのgccを変更することです。これを行う方法については、回答で提供したリンクに従ってください。別の方法として、シンボリックリンクを作成することもできますが、gccの更新時にパッケージマネージャーが文句を言う可能性があるため、最後の手段として以外はこれに反対することをお勧めします。あなたが主張する場合:sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc。gcc-4.8のデフォルトに戻すには、gcc-4.9をgcc-4.8に置き換えてください。これは、g ++および他のGNUコンパイラでも行う必要があります。
holocronweaver 14

GCC 4.9はUbuntu 14.04では使用できません(GCC Goコンパイラを除く)。したがって、この回答はおそらくUbuntu 14.10でも機能しますが、今は役に立ちません。:-)
ソーレンレブボルグ14

実際には、Ubuntu 14.04で利用可能ですが、それは間違いだったかもしれません:packages.ubuntu.com/trusty/gcc-4.9-base。4月から使用しています。
holocronweaver 14

0

OKこれをしましょう:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

すべての質問:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.