3

で改善されたリンク時間最適化サポートについて読んだg++-4.9ので、試してみたいと思います。悲しいことに、実行時に例外が発生しますstd::system_error。特にe.what() == Enable multithreading to use std::thread: Operation not permitted.

これで、通常、そのエラーを修正する方法がわかりまし-pthreadた。コンパイラの呼び出しに追加しますが、実際には、このパラメーターが既にあります。

私のサンプルコードは次のとおりです。

#include <thread>

int main()
{
   std::thread t([](){}); // do nothing in a thread!
   t.join();              // wait for nothing to be done
}

コンパイル済み (X は 7、8、または 9)

g++-4.X -std=c++11 -pthread test.cpp -o thread_test_fine

期待どおりに問題なく動作し、実行時エラーはありません。

でも、

g++-4.X -std=c++11 -pthread -flto test.cpp -o thread_test_runtime_error

例外で失敗しsystem_errorます。

質問:

この動作は意図されたものですか (修正は何ですか?)、それともバグですか?

(この質問が出る前に: 私のコンパイラはすべて でビルドされています--enable-threads=posix)

4

1 に答える 1

2

このパラメータを追加してみてください:

-Wl,--no-as-needed

それが役立つ場合、それはgccバグです: https://stackoverflow.com/a/19463892/280758

于 2014-06-17T13:06:49.637 に答える