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
解决方法
-
可以在g++编译命令中加上“-lpthread”
g++ src/practice1.cpp -lpthread
-
可以在CMakeLists中添加如下命令,相当在编译时自动加上了“-lpthread”的选项
set(CMAKE_CXX_FLAGS " -std=c++11 -march=native -O3 -pthread" )
-
或者这样
target_link_libraries(可执行程序名字 pthread)