当使用cmake编译多线程程序时,比如ThreadPool的程序,需要手动添加pthread库,如果手动添加,就会报错:
undefined reference to `pthread_create'
出现这个问题的原因是在链接阶段,函数对应的库文件搜索不到,找不到这个函数的具体实现。
解决方式就是在cmake文件中添加对应的库。
这里需要指定的是Threads库,参考代码
cmake_minimum_required(VERSION 3.10)
project(ThreadPoolTest)
find_package(Threads)
set(CMAKE_CXX_STANDARD 14)
add_executable(ThreadPoolTest ThreadPoolTest.cc)
target_link_libraries(ThreadPoolTest ${CMAKE_THREAD_LIBS_INIT})
再次cmake ..
然后make -j
问题解决。