rslidar-sdk安装编译以及遇到的问题和解决

rslidar_sdk的安装编译

可以参考官方提供的方法:rslidar_sdk

1.1 通过Git下载

git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update

1.2 直接下载.tar.gz

可以从 rslidar_sdk_release 下载最新的 rslidar_sdk。 应该下载对应的 rslidar_sdk.tar.gz ,而非 source code 源码,源码不带子模块 rs_driver

2.1 安装和编译

  1. 安装依赖libyaml、libpcap、protobuf
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev

sudo apt-get install -y  libpcap-dev

sudo apt-get install -y libprotobuf-dev protobuf-compiler

这里通过 catkin_ws 来编译:

  1. 修改 CMakeLists.txt
#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD CATKIN)
  1. 编译
cd ~/catkin_ws/
catkin_make
source devel/setup.bash

3.1. 编译遇到的错误

主要是 libyaml 相关的一系列未定义的引用:

在这里插入图片描述

具体如下(部分,方便他人报错检索):

CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev[_ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED0Ev[_ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED5Ev]+0x13):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<int>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIiED2Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<int>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIiED0Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0x13):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<bool>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIbED2Ev[_ZN4YAML18TypedBadConversionIbED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIbED0Ev[_ZN4YAML18TypedBadConversionIbED5Ev]+0x13): 跟着更多未定义的参考到 YAML::BadConversion::~BadConversion()

3.2. 解决问题

  • 问题的核心是catkin 没有找到 libyaml
  1. 修改CMakeLists.txt 如下:

主要是重新链接libyaml

  target_link_libraries(rslidar_sdk_node yaml-cpp)

CMakeLists.txt中具体如下:

#========================
# Build Setup
#========================
#Protobuf#
if(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
  add_executable(rslidar_sdk_node
              node/rslidar_sdk_node.cpp
              src/manager/adapter_manager.cpp
              ${PROTO_FILE_PATH}/packet.pb.cc
              ${PROTO_FILE_PATH}/scan.pb.cc
              ${PROTO_FILE_PATH}/point_cloud.pb.cc
              )
  target_link_libraries(rslidar_sdk_node yaml-cpp)  ## 增加的内容
  target_link_libraries(rslidar_sdk_node                   
                      ${PCL_LIBRARIES}
                      ${YAML_CPP_LIBRARIES}
                      ${PROTOBUF_LIBRARY}
                      ${rs_driver_LIBRARIES}
                      )
else(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
  add_executable(rslidar_sdk_node
              node/rslidar_sdk_node.cpp
              src/manager/adapter_manager.cpp
              )
  target_link_libraries(rslidar_sdk_node yaml-cpp)  ## 增加的内容
  target_link_libraries(rslidar_sdk_node                   
                      ${PCL_LIBRARIES}
                      ${YAML_CPP_LIBRARIES}
                      ${rs_driver_LIBRARIES}
                      )

结果编译成功

在这里插入图片描述

  1. 若仍然报错,可以下载 yaml-cpp 进行编译

首先下载yaml-cpp, 链接地址如下: yaml-cpp
然后进入解压,进入文件夹编译:

mkdir build
cd build
cmake .. DYAML_BUILD_SHARED_LIBS=ON
make -j8
sudo make install

最后重新按照 3.2 来编译即可

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值