2016-03-22 27 views
1

最近Ubuntuを15.04から15.10にアップデートしました。これらのバージョンの主な違いの1つは、gcc-4.9 - > gcc-5のデフォルトgccバージョンの更新です。私が開発しているライブラリは、gcc-4.9のために書かれ、コンパイルされており、gcc-4.9でしか動作しない他のライブラリに依存しています。Ubuntuでg ++ - 4.9でコンパイルするときのランタイムエラー[abi:cxx11] 15.10

自分のコンピュータにgcc-4.9をインストールしました。ライブラリとソースファイルの両方を正常にコンパイルできます。私は、得られるプログラムを実行しようとしたときしかし、私はこのエラーを取得:

terminate called after throwing an instance of 'std::ios_base::failure[abi:cxx11]' 
what(): basic_ios::clear: iostream error 
Aborted (core dumped)` 

ソースコードを、私はここで読むことをしようとしているファイルは、アップグレード前に働いていました。私は-D_GLIBCXX_USE_CXX11_ABI=0フラグを使用しようとしましたが、これは正しいことではないと思いますし、うまくいきません。

これは、私は現在、私のメイクファイルに含めていたフラグの例である:

CPPFLAGS = -O0 -g3 -Wall -c -fpermissive -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++0x -fPIC -MMD -MP 

私を助けるかもしれない任意のアイデア?

+0

投稿する[mcve] –

答えて

1

"単に"再コンパイルする必要がありますすべてあなたのプログラムはC++である必要があります。

近道はありません(なかんずく)

The good news is, that GCC 5 now provides a stable libcxx11 ABI, and stable support for C++11 (GCC version before 5 called this supported experimental). This required some changes in the libstdc++ ABI, and now libstdc++6 provides a dual ABI, the classic libcxx98 ABI, and the new libcxx11 (GCC 5 (<< 5.1.1-20) only provides the classic libcxx98 ABI). The bad news is that the (experimental) C++11 support in the classic libcxx98 ABI and the new stable libcxx11 ABIs are not compatible, and upstream doesn't provide an upgrade path except for rebuilding

を持っている参照してください例えばthe Debian wiki on the transision

+0

gcc-4.9を引き続き使用したい場合はこれも同じですか? –

+0

あなたのシステムライブラリはgcc-5(そしてg ++ - 5)でもコンパイルされているので、避けがたいかもしれません。しかし、はい、g ++ - 4.9(およびCシステムライブラリ)に固執すると、これを避けることができます。 –

+0

よろしくお願いいたします。 4.9でコンパイルしているときに[abi:cxx11]エラーが表示される理由を説明していますか? –

関連する問題