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
collect2: error: ld returned 1 exit status
解决方法
使用命令行
$locate libpthread.a
/usr/lib/i386-linux-gnu/libpthread.a
/usr/lib/x86_64-linux-gnu/libpthread.a
/usr/local/MATLAB/R2017b/sys/tcc/linux32/lib/libpthread.a
在camkelist中加入libpthread.a
该方法不可行
解决方法一:
cmakelist中添加
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
解决方法二
更改cmakelist如下图所示
cmake_minimum_required(VERSION 2.8)
PROJECT(cap)
find_package( OpenCV REQUIRED )
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
#if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
#set(BOOST_THREAD_LIBRARY boost_thread-mt -pthread)
#else()
set(BOOST_THREAD_LIBRARY boost_thread -pthread)//新添加
#include_directories("/usr/local/ffmpeg/include")
include_directories(/usr/local/ffmpeg/include)
link_directories(/usr/local/ffmpeg/lib)
link_directories(/usr/lib/x86_64-linux-gnu)
ADD_EXECUTABLE(test_ffmpeg_decode_show test_ffmpeg_decode_show.cpp)
target_link_libraries(test_ffmpeg_decode_show
libavutil.so
libavcodec.so
libavformat.so
libswresample.so
libswscale.so
libavdevice.so
libpthread.so//新添加
${OpenCV_LIBS}
)
问题解决!
参考博客:https://blog.csdn.net/wangyjfrecky/article/details/80760093
版权声明:本文为weixin_45617478原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。