报错:
对‘pthread_create’未定义的引用
//usr/local/lib/libbenchmark.a(benchmark_runner.cc.o):在函数‘benchmark::internal::BenchmarkRunner::DoNIterations()’中:
benchmark_runner.cc:(.text+0x125d):对‘pthread_create’未定义的引用
报错发生情况列举:
(1)自己编译的文件需要依赖库libpthread.a
(2)自己编译文件引用的头文件需要依赖库libpthread.a,这时可以从报错中找到
报错原因:
需要编译的文件里面调用了下面这个头文件(其中benchmark为手动编译安装的包)
#include <benchmark/benchmark.h>
而benchmark.h依赖库libpthread.a这个库文件。
解决办法:
将库libpthread.a加入依赖
(1)g++编译时
g++ test.cpp -lpthread -o test
或
g++ test.cc -lpthread -o test
(2)cmake编译时
在CMakeLists.txt里面链接上库文件
target_link_libraries(xxx_node pthread)
终极解决办法:
如果是自己引用的头文件里面需要依赖库libpthread.a,应该可以直接修改头文件
因为benchmark这个包是官方包,这里就不修改其CMakeLists.txt了
解决过程截图:
参考链接:
直接使用g++编译:
https://blog.csdn.net/yezhen910328/article/details/20989385
cmake使用方法详解 - DoubleLi - 博客园
使用CMakeLists.txt编译
https://blog.csdn.net/qq_31119155/article/details/79393425
@meng
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)