首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++11线程错误运行库

C++11线程错误运行库
EN

Stack Overflow用户
提问于 2013-10-14 11:19:06
回答 3查看 3.7K关注 0票数 5

你好,我对C++11中的线程有问题,我用g++ 4.8.1测试了ubuntu64bit 13.10(测试)。我试图编译代码:

代码语言:javascript
运行
复制
#include <thread>

void func()
{
   // do some work
}

int main()
{
   std::thread t(func);
   t.join();
   return 0;
}

有选项:-std=c++11 -pthread -lpthread。编译是成功的,但是当我尝试运行它时,我收到了一个错误:

在引发“std::system_error”实例后调用终止 什么():允许多线程使用std::线程:不允许的操作

EN

回答 3

Stack Overflow用户

发布于 2013-10-14 12:25:58

我认为其他的答案有点误导。重要的是,您只需要-pthread。这个旗子的顺序不重要!

-pthread将自动与libpthread链接,并将正确地进行链接。请注意,在编译和链接代码时,需要同时提供此选项(当然,当您同时完成所有操作时除外)。

只有在显式提供-lpthread时,放置位置的顺序才可能很重要,但正如前面提到的,在使用-pthread时不应该显式地添加它。

票数 6
EN

Stack Overflow用户

发布于 2013-10-14 11:37:46

您可能遇到了与这里提到的相同的问题:

https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1228201

将此标志添加到命令行。它将强制g++与给定的库链接。

代码语言:javascript
运行
复制
-Wl,--no-as-needed
票数 5
EN

Stack Overflow用户

发布于 2013-10-14 11:23:15

似乎秩序很重要,或者至少,这就是在这个线程中所说的:error - operation not permitted?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19358994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档