对‘pthread_create’未定义的引用
注:本文由博主同步发布于:对‘pthread_create’未定义的引用问题:使用CLion,在Linux下编写C++多线程程序(使用future和async()),CMake构建项目失败,错误提示为"对‘pthread_create’未定义的引用"。源码:#include <iostream>#include <future>void th1(){std::cout<
·
注:本文由博主同步发布于:对‘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)
更多推荐
已为社区贡献1条内容
所有评论(0)