[无人车] 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
)
相关推荐
WGS.1 小时前
llama factory 扩充词表训练
深度学习
Coovally AI模型快速验证5 小时前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
居7然5 小时前
Attention注意力机制:原理、实现与优化全解析
人工智能·深度学习·大模型·transformer·embedding
Python图像识别7 小时前
75_基于深度学习的咖啡叶片病害检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
PyAIGCMaster7 小时前
钉钉的设计理念方面,我可以学习
人工智能·深度学习·学习·钉钉
深蓝电商API7 小时前
告别混乱文本:基于深度学习的 PDF 与复杂版式文档信息抽取
人工智能·深度学习·pdf
tt5555555555558 小时前
Transformer原理与过程详解
网络·深度学习·transformer
qzhqbb8 小时前
神经网络—— 人工神经网络
人工智能·深度学习·神经网络
Victory_orsh8 小时前
“自然搞懂”深度学习(基于Pytorch架构)——010203
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习