c – 在linux上使用gcc 4.6和4.7运行简单的std :: thread代码时的核心转储

weixin_38059644 2019-09-12 12:42:59
我不知道我的简单std :: thread代码(下面列出的)有什么问题.在Ubuntu上使用gcc 4.6或最新的4.7时总会崩溃.我用命令g -std = c 11 myfile.cpp和g -std = gnu 11 myfile.cpp编译它. #include <iostream> #include <thread> using namespace std; void func() { cout << "hello\n"; } int main() { std::thread thrd(func); thrd.join(); } 核心转储的callstack类似于下面的内容 #0 0x00007ffff7539445 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff753cbab in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007ffff7b35b0d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #3 0x00007ffff7b33c16 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #4 0x00007ffff7b33c43 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #5 0x00007ffff7b33e6e in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #6 0x00007ffff7b8829c in std::__throw_system_error(int) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #7 0x00007ffff7b89132 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #8 0x000000000040118e in std::thread::thread<void (&)()> (this=0x7fffffffdeb0, __f= @0x400e2c: {void (void)} 0x400e2c <func()>) at /usr/include/c++/4.7/thread:133 #9 0x0000000000400e5b in main () at main2.cpp:13
...全文
35 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38060280 2019-09-12
  • 打赏
  • 举报
回复
您必须使用-pthread选项进行编译. g++ -std=c++11 -pthread -o main main.cpp

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧