对‘pthread_create’未定义的引用

注:本文由博主同步发布于:对‘pthread_create’未定义的引用

问题:

使用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)
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值