首页 > 其他 > 详细

对‘pthread_create’未定义的引用

时间:2020-06-01 20:59:48      阅读:48      评论:0      收藏:0      [点我收藏+]

问题:

使用CLion,在Linux下编写C++多线程程序(使用future和async()),CMake构建项目失败,错误提示为"对‘pthread_create’未定义的引用"。

源码:

#include <iostream>
#include <future>

void th1(){
    std::cout<<"th1"<<std::endl;
}

void th2(){
    std::cout<<"th2"<<std::endl;
}

int main() {
    using namespace std;

    future<void> f1(async(th1));
    future<void> f2(async(th2));

    f1.get();
    f2.get();

    return 0;
}

 

错误提示:

在函数‘std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (*)()> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (*)()> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (*)()> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (*)()> >&&)::{lambda()#1}&&)’中:
/usr/include/c++/7/thread:122:对‘pthread_create’未定义的引用

原因:

由于pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程时,在编译中要加 -lpthread参数。摘自--https://www.cnblogs.com/liuwanpeng/articles/6654702.html

解决:

在编译中要加 -lpthread参数

  • gcc xxx.c -o yyy -lpthread
  • CLion的CMakeLists文件:link_libraries(pthread)

 

对‘pthread_create’未定义的引用

原文:https://www.cnblogs.com/icky1024/p/debug-pthread-compile.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!