2016-03-30 13 views
5

GCCでABIを変更する前にgcc 4.8でコンパイルしたライブラリをダウンロードしました。古いABIを使用してGCC 5でブーストをコンパイルするには?

私のノートパソコン(最新のkubuntu)には、GCC 5.2があります。私はブーストをインストールしたときに、私が古いABIを使用してブーストをインストールするにはどうすればよい

....それは新しいABIを使用したが、その後、私は、次のリンクエラー

未定義シンボル.....__ cxx11を取得しているようですGCC5とは?

答えて

6

私の知る限り、公式のKubuntuリポジトリには古いABI用の事前構築されたBoostパッケージはありませんので、Boostを自分で構築する必要があります。構築プロセスは文書番号hereです。

ライブラリの作成時に使用したものと同じBoostバージョンを作成していることを確認してください。 Boost設定マクロが定義されている場合は、同様にそれらを定義する必要があります。そうしないと、ライブラリとBoostとの間にABIの非互換性が生じることがあります。

libstdC++を古いABIに切り替えるには、hereのように、_GLIBCXX_USE_CXX11_ABIを0に定義する必要があります。例:

b2 -j8 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 stage 

また、Boostとライブラリを使用する独自のコードを作成するときにマクロを定義する必要があります。

+2

正解ありがとうございます。 "define"は私が探していた設定オプションでした。他のオプションが必要な人にこのリンクを追加したいと思います。 http://www.boost.org/build/doc/html/bbv2/overview/invocation.html –

関連する問題