在Linux下进行多线程程序测试时出现如下问题:

对‘pthread_create’未定义的引用 collect2: error: ld returned 1 exit status

 问题原因:linux下调用子线程时会用到pthread库,但pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a

解决方法

1.在编译中要加-lpthread参数:gcc createThread.c -lpthread -o createThread. 加上这个以后编译成功!

2.在CMakeList.txt中设置编译选项set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-pthread")或使项目文件连接到pthread库。

#1.设置编译选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-pthread")
#2.连接到pthread库
target_link_libraries(Porject_name pthread)

 修改后编译成功,没有问题。

 

Logo

更多推荐