使用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参数
原文:https://www.cnblogs.com/icky1024/p/debug-pthread-compile.html