web-dev-qa-db-ja.com

Ubuntuでgcc / g ++ 4.9を入手してインストールしますか?

Gccおよびg ++の最新バージョンをインストールするにはどうすればよいですか?

さまざまなC++ 11およびC++ 1y機能を使用しています。これが必要な理由です。

80
A T

Ubuntu Toolchain PPAからGCCのアップストリームバージョンの近くにインストールできます。 https://wiki.ubuntu.com/ToolChain#PPA_packages

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install g++-4.9

Ubuntu 14.04でテスト済み。

110
Vladimir Rutsky

イントロ

男性に魚などを教えるなど

ソースパッケージをビルドし、適切な方法でローカルリポジトリから提供する方法。依存関係が満たされる限り、これはどのディストリビューションでも機能します/この方法では、すべてのパッケージにビルド-depsをインストールする必要はなく、外部のパッケージでマシンを汚染する必要はありません。 。これを1回行うには数分しかかかりません。その後、他の人に頼ってppaをパッケージ化したり、さまざまな.debsをダウンロードしたりすることなく、必要なパッケージを再構築するために再利用できます

ビルドとdebianからraw .debsをプルする利点は、ディストリビューションのビルド依存関係として使用されるものとはバージョン/リビジョンが異なる可能性があるディストリビューションのパッケージに対してパッケージをビルドすることです。これは多かれ少なかれ、パッケージをバックポートするプロセスです。また、任意のubuntuディストリビューションを使用して、他のディストリビューションをターゲットにしたパッケージをビルドすることもできます(この場合のターゲットは、標準リポジトリパッケージに対してビルドすることを意味します)。

基本的なビルド方法

(PPAアップロード用ではありません-これにはランチパッドからの官僚的要件があります

おそらく必須:packaging-dev(とりわけbuild-essential pubilder ubuntu-dev-toolsを引っ張る)

  1. Pbuilderをセットアップします(これにより、システムをビルド依存パッケージで汚染することなく、chrootでパッケージをビルドできます)

    • Sudo pbuilder create
    • 特定のディストリビューション用にビルドする場合(pbuilderはchrootでビルドシステムリリースを使用します)、pbuilder-dist [precise/oneric/trusy/etc...] createを使用できます
  2. Debianソースを入手する

    • pull-debian-source gcc-4.9 [4.9.0-6]特定のdebianリビジョンはオプションですが、実験的/不安定/テスト/安定したリビジョンをプルしたい場合に役立ちます
    • 特定のubuntuディストリビューションからプル deb-srcとしてsources.listに追加し、Sudo apt-get srcを使用して
  3. ビルドパッケージ

    • Sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • ダウンロードされたファイルには.dscファイルがあり、最新のgccの場合はgcc-4.9_4.9.0-6.dscであり、これはパッケージ記述子ファイルです。 .orig.tar.[gz/xz]はソースtarballです。
  4. ローカルのAptリポジトリを作成する

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (レポジトリにいると仮定)apt-ftp archive packages . > Packages
    • (これを行う多くの方法の1つ)Sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • 任意の場所からダウンロードした.debsを使用してこのステップを実行することもできます(ステップ1-3をスキップ)
  5. インストール

    • apt-get update; apt-get install gcc-4.9 g++-4.9

余分なトリック

簡単なバックポート依存関係

パッケージをビルドするときに、自己コンパイルパッケージを使用して依存関係を満たします。 (フォルダー~/pbuilder~/pbuilder/precise_local(正確にはローカルパッケージリポジトリ)および~/pbuilder/precise_hooks(フックスクリプト用)でセットアップしています)

次を~/.pbuilderrcに追加します

OTHERMIRROR="deb [trusted=yes] file:///home/user/pbuilder/precise_local ./"

BINDMOUNTS="/home/user/pbuilder/precise_local" 

HOOKDIR="/home/user/pbuilder/precise_hooks"

EXTRAPACKAGES="apt-utils"

precise_hooksでファイルを作成しますD05local(通常のUNIX/Linuxの場合、プレフィックスDは、スクリプトがフックされたときに通知します05は自主的な名前の順序で、localは単なる名前フックが1つしかない場合、Dがプレフィックスである限り、何を呼び出すかは重要ではありません

スクリプトはワンライナーです

(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)

これで、precise_localに配置されたパッケージはビルド依存関係を満たします。これは、バックポートも必要な依存関係を持つパッケージをバックポートするときに、依存関係ツリーをローカルに構築するのに非常に役立ちます

VMソリューション

これをさらにきれいに行うには、VMイメージまたはLXCコンテナーを使用してこの混乱を投獄します。

カスタムパッチの適用

quiltを使用して、ほとんどのdebianパッケージにカスタムパッチを適用できます。quiltパッチは、ほとんどのVCSの差分を使用できます( sing quilt を参照)

追加の手順があります。.dsc.debian.tar.gzを再構築する必要があります。私が知っている最もクリーンな方法はbzr-builddebであり、最高の成功率IMHO(git-build-packageおよび他のヘルパースクリプトと比較して)であり、debuildを直接呼び出すよりもずっときれいです(bzr = Bazaar canonicalのVCS)

  1. Sudo apt-get install bzr-builddeb
  2. .orig.tar.gzが抽出され、.debian.tar.gzが抽出され、その中に配置されると仮定します
    • bzr init
    • bzr add
    • bzr commit
  3. (オプション)
    • 変更debian/changelog
    • debian/patches/にパッチを追加し、debian/patches/seriesを変更します(キルトには、パッチを追加したり、オンザフライで変更するためのユーティリティもあります。ドキュメントを参照してください)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -ucこれにより、ソースファイルが再構築され、署名されません(PPA /ディストリビューションのアップロードにはgpg署名が必要ですが、プライベートローカルリポジトリには必要ありません)
  5. cd ../build-area/上記のステップ3から続行します。

ここの手順1〜4は、PPAにアップロードする必要があるもの(バイナリファイルは使用しません)ですが、Launchpadの官僚主義を満たすためにいくつかの手順が必要です(この answer に説明があります。 this いくつかのリンクがあります)

42
crasic

Debianはパッケージを提供しています: https://packages.debian.org/jessie/gcc-4.9 -Ubuntu/Debianの互換性に関する問題の発生を防ぐsources.listに追加しないでください。

代わりに、これらすべてを単にダウンロードしてください:

binutils_2.25-5_AMD64.deb
cpp_4.9.2-2_AMD64.deb
g++_4.9.2-2_AMD64.deb
gcc_4.9.2-2_AMD64.deb
gcc-4.9-base_4.9.2-10_AMD64.deb
libasan1_4.9.2-10_AMD64.deb
libatomic1_4.9.2-10_AMD64.deb
libcilkrts5_4.9.2-10_AMD64.deb
libgcc1_4.9.2-10_AMD64.deb
libgcc-4.9-dev_4.9.2-10_AMD64.deb
libgomp1_4.9.2-10_AMD64.deb
libitm1_4.9.2-10_AMD64.deb
liblsan0_4.9.2-10_AMD64.deb 
libmpfr4_3.1.2-2_AMD64.deb
libquadmath0_4.9.2-10_AMD64.deb
libstdc++-4.9-dev_4.9.2-10_AMD64.deb
libstdc++6
libtsan0_4.9.2-10_AMD64.deb
libubsan0_4.9.2-10_AMD64.deb

Debianのサーバーから、例えば:

http://ftp.us.debian.org/debian/pool/main/b/binutils/binutils_2.25-5_AMD64.deb

次に、それらをインストールします。例:$ for package in *.deb; do Sudo dpkg --install "$package"; done

[すべての依存関係がカバーされるまで、bashループを数回実行する方が、ダウンロードした順序を覚えるよりも簡単です!]

8
A T

現在(20141102)PPAを追加し、上記のコマンドapt-get install gcc-4.9 g++-4.9 cpp-4.9を呼び出すと、多数の推奨パッケージが出力されます。 libvtv0-dbg(依存関係の競合がある)を除くすべてをインストールします。

apt-get install gcc-4.9 g++-4.9 cpp-4.9 gcc-4.9-locales g++-4.9-multilib libstdc++6-4.9-dbg gcc-4.9-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg lib32stdc++6-4.9-dbg libx32stdc++6-4.9-dbg

(興味がない場合は-dbgパッケージをスキップします)、apt-get dist-upgrade --auto-removeを実行します。その最後のステップでは、基本的にgcc-4.8をgcc-4.9に置き換え(古いバージョンをアンインストールしない)、最新のFortranコンパイラーを同時に取り込みます。

2
RJVB

Gcc-4.9-baseパッケージのバージョンを強制して、投稿したエラーメッセージを通過させなければなりませんでした。その後、インストールが機能しました

Sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04

今、あなたは定期的に行うことができます

Sudo apt-get install gcc-4.9
2
mark.kedzierski

GCC GNU 4.9をインストール

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

Sudo apt-get update

Sudo apt-get install gcc-4.9

デフォルトのアプリケーションリストから以前のgccバージョンを削除します(既に存在する場合)

Sudo update-alternatives --remove-all gcc

GCC 4.9をシステムのデフォルトコンパイラにする

Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

Sudo update-alternatives --config gcc

最新のアップデートGCC 4.9.1は、GCC 4.9ブランチからのバグ修正リリースであり、GCC 4.9.0のリグレッションおよび重大なバグに対する重要な修正と、以前のリリース以降に修正された88を超えるバグが含まれています。それに加えて、GCC 4.9.1リリースは、CおよびC++だけでなく、FortranでもOpenMP 4.0をサポートします。

注:ubuntu 14.04 LTSでチェック済み

2
Swap L