web-dev-qa-db-ja.com

対応するC ++標準ライブラリを使用するG ++の新しいバージョンをインストールする方法は?

テスト目的でg ++コンパイラの複数のバージョンをインストールしようとしています。

g++ 4.9.35.1.05.2.0、および6.1.0をインストールできるようにしたいと思います。

私ができることを知っている

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
Sudo apt-get update -qq
Sudo apt-get install g++-4.9, g++5.1, g++5.2, g++6

しかし、私のテストでは、それらはすべて、システムにインストールされた標準ライブラリ(g++-4- series標準ライブラリ)を使用することになります。コードをコンパイルするとき、標準ライブラリはC++ 11標準が行うべきことを何もしないので、たとえば、std::string移動コンストラクターはnoexceptとマークされていないため、わかります。しかし、gcc-6標準ライブラリを備えたubuntu-xenialでは、そうであり、他の関連する問題は解決されています。

たとえば、ubuntuリポジトリにはlibstdc++-4.8-devという名前のパッケージがあることがわかりますが、新しいコンパイラをインストールすると、それらを使用していないようです。

また、ホームディレクトリのソースからコンパイラをインストールできることも知っていますが、ビルドに時間がかかるため、残念ながらtravis-ci内で実行できません。 travis-ciでは、すべてのビルドは1時間後にタイムアウトします。

Ppaからインストールするコンパイラを設定して、正しいバージョンのC++標準ライブラリ、つまりシステムのデフォルトではなくリリースされたものを使用する簡単な方法はありますか?

ソースからのビルドを伴わないapt-getを使用して、コンパイラバイナリとそれに関連するすべてのライブラリをホームディレクトリのフォルダーにインストールする簡単な方法はありますか?

私は これらの指示 を見つけました。これは、-rpathフラグまたはspecsファイルを使用できる、またはLD_LIBRARY_PATHを調整できると言っています、しかし、私が確信していないのは、どのパスを設定すべきかということです。別の問題は、それが単なる動的リンカーではなく、ubuntu-toolchain-r/testコンパイラーがシステムlibstdc++ヘッダーも使用しているように見えるため、何らかの方法で修正する必要があるということです。


私の現在の戦略は、ソースコードリリースのtarballをダウンロードし、60分以内にビルドする方法が見つかるまでconfigureフラグをいじるだけです。一度ビルドすると、「キャッシュ」ディレクトリにあるので、プロジェクトの今後のビルドで1分以内にイメージを取得できます。

「キャッシュ」機能は、ubuntu-precise(12.04 LTS)travisイメージを使用している場合にのみ使用できるため、ここではtrustyも使用できません。

私の設定行は現在:

${GCC_SRC_DIR}/configure --prefix=${GCC_DIR}  --disable-checking --enable-languages=c,c++ --disable-multilib --disable-bootstrap

私はこれを主に この男の指示 に基づいて行っています。

古いバグレポート もあります。

--disable-checkingオプションは実際には文書化されていないため、多分機能しません。 --disable-bootstrapオプションは文書化されていますが、ここで説明されているように 、実際にコンパイラを3回ビルドできないように願っています ...これは動作します。

その後、実際にビルドするためにmake -j2 --quietを使用しています。


長い行で作業するようになりました:

        ${GCC_SRC_DIR}/configure --prefix=${GCC_DIR}  --disable-checking --enable-languages=c,c++ --disable-multilib --disable-bootstrap --disable-libsanitizer --disable-libquadmath --disable-libgomp --disable-libssp --disable-libvtv --disable-libada --enable-version-specific-runtime-libs
5
Chris Beck

Gcc-5.xの構成:cd build-gcc-5.x/

../gcc-5.3.0/configure --prefix=/usr/local/gcc53 --program-suffix=53 --enable-languages=c,c++ --with-system-zlib --disable-multilib --disable-libstdcxx-pch

Sudo apt install zlib1g-devの場合、--with-system-zlibが必要)

「60分間の制限」について:たとえば55分後にターミナルを終了し、後でmakeで続行できます。

1
Knud Larsen