3

正如我在 中阅读了改进的链接时间优化支持一样g++-4.9,我想试一试。可悲的是,我在运行时遇到异常,特别std::system_errore.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 回答