Ubuntu18.04 运行多线程报错 : 对‘pthread_create’未定义的引用

报错情况为:
/tmp/ccTpQ7AX.o:在函数‘std::thread::thread<void (&)()>(void (&)())’中: practice1.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x2f):对‘pthread_create’未定义的引用 collect2: error: ld returned 1 exit status

解决方法

  1. 可以在g++编译命令中加上“-lpthread”
    g++ src/practice1.cpp -lpthread

  2. 可以在CMakeLists中添加如下命令,相当在编译时自动加上了“-lpthread”的选项
    set(CMAKE_CXX_FLAGS " -std=c++11 -march=native -O3 -pthread" )

  3. 或者这样
    target_link_libraries(可执行程序名字 pthread)

posted @ 2021-12-11 10:39  Weighting  阅读(456)  评论(0编辑  收藏  举报