我也在使用 WebRTC 在 ROS 项目中工作。
我的问题是当我尝试构建我的项目时,我得到了这个:
/usr/bin/ld: /home/carlos/Documentos/ROS_WebRTC/catkin_ws/src/libwebrtc/out/lib/libwebrtc.a(thread_pthread.o): undefined symbol reference 'pthread_rwlock_wrlock@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
在其他有类似问题的帖子中搜索,我得出的结论是我必须将 CMAKE FLAG "-pthread"
添加到 g++。
使用 VERBOSE=1
和 catkin_make
我意识到,事实上,导致问题的 .cc 文件需要那个标志。但是不知道怎么加。
我已经尝试使用 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lpthread")
但它没有解决任何问题。
这是我的 CMakeFiles.txt:
cmake_minimum_required(VERSION 2.8.3)
project(webrtcbridge)
add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
rospy
genmsg
)
find_package(LibWebRTC REQUIRED)
catkin_package()
include_directories(
include ${catkin_INCLUDE_DIRS}
)
include_directories(
include ${LIBWEBRTC_USE_FILE}
)
add_executable(webrtcbridge_node src/webrtcbridge_node.cc)
target_link_libraries (webrtcbridge_node ${catkin_LIBRARIES})
target_link_libraries (webrtcbridge_node ${LIBWEBRTC_LIBRARIES})
这是执行 catkin_make 的一段冗长的代码:
/usr/bin/c++ CMakeFiles/webrtcbridge_node.dir/src/webrtcbridge_node.cc.o -o/home/carlos/Documentos/ROS_WebRTC/catkin_ws/devel/lib/webrtcbridge/webrtcbridge_node -rdynamic/opt/ros/kinetic/lib/libroscpp.so -lboost_signals -lboost_filesystem/opt/ros/kinetic/lib/librosconsole.so/opt/ros/kinetic/lib/librosconsole_log4cxx.so/opt/ros/kinetic/lib/librosconsole_backend_interface.so - llog4cxx -lboost_regex/opt/ros/kinetic/lib/libxmlrpcpp.so/opt/ros/kinetic/lib/libroscpp_serialization.so/opt/ros/kinetic/lib/librostime.so/opt/ros/kinetic/lib/libcpp_common。所以 -lboost_system -lboost_thread -lboost_chrono -lboost_date_time -lboost_atomic -lpthread -lconsole_bridge/home/carlos/Documentos/ROS_WebRTC/catkin_ws/src/libwebrtc/out/lib/libwebrtc.a -lSM -lICE -lX11 -lXext -ldl -lrt - wl **"这里应该是-pthread我觉得"**,-rpath,/opt/ros/kinetic/lib
关于在最后设置“pthread”有什么想法吗?
最佳答案
“DSO 缺失”- DSO 是一个动态共享对象。您需要将线程库链接到您的可执行文件。
试试这个:
find_package(Threads)
...
target_link_libraries(webrtcbridge_node ${CMAKE_THREAD_LIBS_INIT})
关于c++ - undefined symbol 引用 'pthread_rwlock_wrlock@@GLIBC_2.2.5',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281853/