2016-12-04 6 views
0

プログラムのメンバーではないSTLの仕事の他の部分だけで罰金を使用してGCC 6.2.0スレッドがSTD

$ g++ test.cpp -H 
. /home/nathan/development/toolchain/gnu/x86_64-unknown-linux-gnu/include/c++/6.2.0/thread 

$ gcc -v 
Using built-in specs. 
COLLECT_GCC=gcc 
COLLECT_LTO_WRAPPER=/home/nathan/development/toolchain/gnu/x86_64-unknown-linux-gnu/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/lto-wrapper 
Target: x86_64-pc-linux-gnu 
Configured with: ../gcc/configure --prefix=/home/nathan/development/toolchain/gnu/x86_64-unknown-linux-gnu --enable-languages=c,c++,fortran --disable-multilib --enable-threads=posix --enable-libstdcxx-threads 
Thread model: posix 
gcc version 6.2.0 (GCC) 

、それだけthreadですそれは失敗する。私は 何かを見つけましたか?設定すると、GCCはスレッドモデルを取得します。

編集--enable-threadsとGCC再コンパイル1

。それでも同じエラーが発生します。

編集--enable-libstdcxx-threadsとGCC再コンパイル2

。それでも同じエラーが発生します。

編集--enable-threads=posixとGCC再コンパイル3

。それでも同じエラーが発生します。 4

編集は、私はブランチgcc-6_2_0-releaseにレポを使用して構築されたことを明らかにしたかったです。

+1

おそらく、C++用のスレッドサポートなしでgccをビルドしたことがあります。 'g ++を試してください。exe -dM -E -x C++ -std = C++ 11 test.cpp | egrep '_GLIBCXX_HAS_GTHREADS | _GLIBCXX_USE_C99_STDINT_TR1'。両方が定義されていない場合は、ビルドにスレッディングがサポートされていません。 '--enable-threads'がまだ必要なのかどうかは分かりません。 –

+0

私は '#define _GLIBCXX_USE_C99_STDINT_TR1 1'しか見ることができません。私は '--enable-threads'で再構築すると思います。これは2016年のデフォルトではないのはなぜですか? – nathansizemore

+0

@ n.m。私はちょうど '--enable-threads'でビルドを終了しましたが、私はまだ同じエラーが発生します。私は何か他のものを逃している? – nathansizemore

答えて

1

リポジトリソースを使用してビルドを複数回試した結果、GNUミラーからリリースされたtarballを使用してコンパイルしました。予想通り

--enable-languages=c,c++ --disable-multilib

、すべてが働いた:オプションが解除されているものVSレポにあるものとの違いをしただろうが、私は単純に使用わかりません。

+1

よく知っておいて、私はいつもリリースのtarballsを使うようメモするつもりです...あなたはどこかで "gcc"をリリースしているかどうかを見てみることができますか?実際には、他のレポなどからコードをコピーするような余分な準備ステップがあるかもしれません。 –

関連する問題