[无人车] ros2 下 build 报错:collect2: error: ld returned 1 exit status

编译报错

复制代码
root@ubuntu:~/dev_ws# colcon build --packages-select line_follower_perception
Starting >>> line_follower_perception
[Processing: line_follower_perception]
[Processing: line_follower_perception]
--- stderr: line_follower_perception
/usr/bin/ld: CMakeFiles/line_follower_perception.dir/src/line_follower_perception.cpp.o: in function `rclcpp::create_subscription_factory<nav_msgs::msg::Odometry_<std::allocator<void> >, std::_Bind<void (LineFollowerPerceptionNode::*(LineFollowerPerceptionNode*, std::_Placeholder<1>))(std::shared_ptr<nav_msgs::msg::Odometry_<std::allocator<void> > >)>, std::allocator<void>, nav_msgs::msg::Odometry_<std::allocator<void> >, rclcpp::Subscription<nav_msgs::msg::Odometry_<std::allocator<void> >, std::allocator<void>, rclcpp::message_memory_strategy::MessageMemoryStrategy<nav_msgs::msg::Odometry_<std::allocator<void> >, std::allocator<void> > >, rclcpp::message_memory_strategy::MessageMemoryStrategy<nav_msgs::msg::Odometry_<std::allocator<void> >, std::allocator<void> > >(std::_Bind<void (LineFollowerPerceptionNode::*(LineFollowerPerceptionNode*, std::_Placeholder<1>))(std::shared_ptr<nav_msgs::msg::Odometry_<std::allocator<void> > >)>&&, rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> > const&, rclcpp::message_memory_strategy::MessageMemoryStrategy<nav_msgs::msg::Odometry_<std::allocator<void> >, std::allocator<void> >::SharedPtr, std::shared_ptr<rclcpp::topic_statistics::SubscriptionTopicStatistics<nav_msgs::msg::Odometry_<std::allocator<void> > > >)::{lambda(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&)#1}::operator()(rclcpp::node_interfaces::NodeBaseInterface*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::QoS const&) const':
line_follower_perception.cpp:(.text._ZZN6rclcpp27create_subscription_factoryIN8nav_msgs3msg9Odometry_ISaIvEEESt5_BindIFM26LineFollowerPerceptionNodeFvSt10shared_ptrIS5_EEPS7_St12_PlaceholderILi1EEEES4_S5_NS_12SubscriptionIS5_S4_NS_23message_memory_strategy21MessageMemoryStrategyIS5_S4_EEEESK_EENS_19SubscriptionFactoryEOT0_RKNS_32SubscriptionOptionsWithAllocatorIT1_EENT4_9SharedPtrES8_INS_16topic_statistics27SubscriptionTopicStatisticsIT2_EEEENKUlPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3QoSEE_clES13_S1B_S1E_[_ZZN6rclcpp27create_subscription_factoryIN8nav_msgs3msg9Odometry_ISaIvEEESt5_BindIFM26LineFollowerPerceptionNodeFvSt10shared_ptrIS5_EEPS7_St12_PlaceholderILi1EEEES4_S5_NS_12SubscriptionIS5_S4_NS_23message_memory_strategy21MessageMemoryStrategyIS5_S4_EEEESK_EENS_19SubscriptionFactoryEOT0_RKNS_32SubscriptionOptionsWithAllocatorIT1_EENT4_9SharedPtrES8_INS_16topic_statistics27SubscriptionTopicStatisticsIT2_EEEENKUlPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3QoSEE_clES13_S1B_S1E_]+0x34): undefined reference to `rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<nav_msgs::msg::Odometry_<std::allocator<void> > >()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/line_follower_perception.dir/build.make:137: line_follower_perception] Error 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/line_follower_perception.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< line_follower_perception [1min 16s, exited with code 2]

其中,

collect2: error: ld returned 1 exit status

问题出在添加了以下代码:

复制代码
  subscriber_odom_info_ = this->create_subscription<nav_msgs::msg::Odometry>(
      "/odom", 10, std::bind(&LineFollowerPerceptionNode::subscription_odom_info_callback, this, std::placeholders::_1));

链接的时候找不到 nav_msgs 的lib,解决方法是在工程文件夹的 CMakeLists.txt 中添加以下代码:

复制代码
find_package(nav_msgs REQUIRED)
find_package(tf2 REQUIRED)


ament_target_dependencies(
  ${PROJECT_NAME}

  ...

  nav_msgs
  tf2
)
相关推荐
写代码的二次猿3 小时前
安装openfold(顺利解决版)
开发语言·python·深度学习
SkyXZ4 小时前
人脸伪造判别分类网络CNN&Transformer
深度学习
飞Link5 小时前
深度解析 LSTM 神经网络架构与实战指南
人工智能·深度学习·神经网络·lstm
love530love5 小时前
Windows 11 源码编译 vLLM 0.16 完全指南(RTX 3090 / CUDA 12.8 / PyTorch 2.7.1)
人工智能·pytorch·windows·python·深度学习·vllm·vs 2022
放下华子我只抽RuiKe56 小时前
机器学习全景指南-基石篇——预测连续值的线性回归
人工智能·深度学习·神经网络·算法·机器学习·自然语言处理·线性回归
带娃的IT创业者6 小时前
专栏系列3.3《时序关联学习:r=0.733 背后的记忆形成》
人工智能·深度学习·神经网络·时序学习·nct·神经调质
快乐非自愿6 小时前
NIO核心原理深度解析:非阻塞I/O的块式设计与高并发实现逻辑
人工智能·深度学习·nio
八月瓜科技6 小时前
擎策·知海全球专利数据库 技术赋能检索 让科技创新少走弯路
大数据·数据库·人工智能·科技·深度学习·娱乐
兴通扫码设备6 小时前
ocr工业场景适配升级:深圳市兴通物联XTC8501智能相机接口与环境适应性技术解析
数据库·人工智能·深度学习·数码相机·计算机视觉
小陈phd6 小时前
多模态大模型学习笔记(十六)——Transformer 学习之 Decoder Only
人工智能·笔记·深度学习·学习·自然语言处理·transformer