如何解决CMake对pthread_key_create的未定义引用
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads required)
message("[temp] threads stuff Threads_FOUND=${Threads_FOUND} in Threads_DIR=${Threads_DIR}")
if(TARGET Threads::Threads)
message("[temp] Yep")
else()
message("[temp] nope")
endif()
我可以在控制台中看到已找到线程库,并且Threads :: Threads目标存在。但是Threads_DIR为空!
[temp] threads stuff Threads_FOUND=TRUE in Threads_DIR=
[temp] Yep
某些目标链接到Threads :: Threads。
add_executable(ETestOnline ETestOnline.cpp)
target_link_libraries(ETestOnline
PRIVATE
Threads::Threads
${extra_libs}
)
这是我得到的输出:
[12/33] Linking CXX executable test/integration/ETestOnline
Failed: test/integration/ETestOnline
: && /usr/bin/clang++-9 -O2 -g -DNDEBUG test/integration/CMakeFiles/ETestOnline.dir/ETestOnline.cpp.o -o test/integration/ETestOnline -Wl,-rpath,/opt/opencv/lib:/opt/boost/lib _deps/mycode-common-build/libmycode-common-core.a _deps/mycode-common-build/libmycode-common-image.a _deps/mycode-common-build/libmycode-common-net.a _deps/mycode-common-build/libmycode-common-video.a liblegofw_common_nodes.a _deps/mycode-common-build/libmycode-common-image.a /opt/opencv/lib/libopencv_highgui.so.3.4.5 /opt/opencv/lib/libopencv_videoio.so.3.4.5 /opt/opencv/lib/libopencv_imgcodecs.so.3.4.5 /opt/opencv/lib/libopencv_imgproc.so.3.4.5 /opt/opencv/lib/libopencv_core.so.3.4.5 _deps/mycode-common-build/libmycode-common-net.a _deps/mycode-common-build/libmycode-common-video.a _deps/mycode-common-build/libmycode-common-core.a /opt/boost/lib/libboost_random.so.1.70.0 /opt/boost/lib/libboost_system.so.1.70.0 _deps/spdlog-build/libspdlog.a /usr/lib/x86_64-linux-gnu/libavformat.so /usr/lib/x86_64-linux-gnu/libavcodec.so /usr/lib/x86_64-linux-gnu/libavutil.so /usr/lib/x86_64-linux-gnu/libswresample.so /usr/lib/x86_64-linux-gnu/libswscale.so /usr/lib/x86_64-linux-gnu/libavdevice.so /usr/lib/x86_64-linux-gnu/libavfilter.so /opt/boost/lib/libboost_random.so.1.70.0 /opt/boost/lib/libboost_system.so.1.70.0 /opt/opencv/lib/libopencv_highgui.so.3.4.5 /opt/opencv/lib/libopencv_videoio.so.3.4.5 /opt/opencv/lib/libopencv_imgcodecs.so.3.4.5 /opt/opencv/lib/libopencv_imgproc.so.3.4.5 /opt/opencv/lib/libopencv_core.so.3.4.5 && :
/usr/bin/ld: test/integration/CMakeFiles/ETestOnline.dir/ETestOnline.cpp.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
clang: error: linker command Failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand Failed.
任何想法可能有什么问题吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。