大型ROS项目编译方法(livox_ros_driver2和fast_lio_msf/Pose6D.h报错)

1.编译方法

对于含有livox_ros_driver和livox_ros_driver2的库,我们采取这样的编译方法:

  1. 首先在catkin_ws/src下只编译livox_ros_driver和livox_ros_driver2:进入到livox_ros_driver2, 直接build.sh ROS1

  2. 编译完成后,在catkin_ws/src加入pointlio, fastlio2,dlio, 然后再在catkin_ws下catkin_make, 如果仍然遇到fast_lio_msf/Pose6D.h: 没有那个文件或目录这种情况,直接采用catkin_make -j1, 直接能够解决问题。

2. 总结

总结:

  • 遇到fast_lio_msf/Pose6D.h: 没有那个文件或目录我们采用

  • 遇到livox_ros_driver/CustomMsg.h:No such file and directory,我们采用重复catkin_make的方法来可以解决

  • 遇到livox_ros_driver2/CustomMsg.h:No such file and directory,只能采用进入到livox_ros_driver2, 直接build.sh ROS1方法解决,否则采用上述两个方法都会报错

  • 综合上来:当我们的工作空间同时存在:算法1,算法2,livox_ros_driver和livox_ros_driver2时,要先编译livox_ros_driver和livox_ros_driver2,然后再加入算法1和算法2利用catkin_make才能编译成功。

3.理由

  • 1.为什么先编译livox_ros_driver? 先生成livox_ros_driver_lib和livox_ros_driver2_lib, 然后加入其他算法catkin_make时才能使用这两个库,否则直接catkin_make,会先编译算法,然后编译livox_ros_driver, 此时找不到livox_ros_driver,就会报错;就算找不到livox_ros_driver,我们也可以多次编译来解决livox_ros_driver的问题,因为第2次编译可能是先编译livox_ros_driver再编译算法;但是无论编译多少遍, 总是会出现livox_ros_driver2的编译报错,造成livox_ros_driver和livox_ros_driver2和多个算法并存的时候都无法成功,此时我们就要利用build.sh ROS1将编译好livox_ros_driver2,然后再cakin_make+catkin_make -j1 + 多次catkin_make解决其他问题;

  • 2.为什么要用catkin_make -j1来解决fast_lio_msf/Pose6D问题? 因为catkin_make -j1catkin_make 最大不同是多线程和单线程,由于用catkin_make时候,编译有些cpp会用到fast_lio_msf/Pose6D,而此时fast_lio_msf/Pose6D没有生成就会造成报错,用catkin_make -j1虽然慢但是单线程,所以不会存在先无后有的问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值