You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 C++包colcon构建失败:未定义main函数引用错误

ROS2 C++节点编译失败:undefined reference to main' 错误

报错信息

ros2_ws$ colcon build --packages-select my_cpp_pkg 
Starting >>> my_cpp_pkg 
--- stderr: my_cpp_pkg
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function _start': (.text+0x1b): undefined reference to main' 
collect2: error: ld returned 1 exit status
gmake[2]: *** [CMakeFiles/cpp_node.dir/build.make:151: cpp_node] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:137: CMakeFiles/cpp_node.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
Failed <<< my_cpp_pkg [0.89s, exited with code 2]

Summary: 0 packages finished [1.68s] 
1 package failed: my_cpp_pkg
1 package had stderr output: my_cpp_pkg

现有CMakeLists.txt内容

cmake_minimum_required(VERSION 3.8)
project(my_cpp_pkg)

#default to c++14
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 14)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)

add_executable(cpp_node src/my_first_node.cpp)
ament_target_dependencies(cpp_node rclcpp)

install(TARGETS 
  cpp_node
  DESTINATION lib/${PROJECT_NAME}
)

ament_package()

问题原因及解决方法

你的CMakeLists.txt配置无异常,报错核心原因是链接器无法在src/my_first_node.cpp文件中找到main函数的定义,可按以下步骤修复:

  • 检查src/my_first_node.cpp文件,确保包含标准ROS2节点的main函数结构,示例如下:
#include "rclcpp/rclcpp.hpp"

int main(int argc, char **argv)
{
  rclcpp::init(argc, argv);
  auto node = std::make_shared<rclcpp::Node>("my_first_node");
  RCLCPP_INFO(node->get_logger(), "Hello ROS2!");
  rclcpp::spin(node);
  rclcpp::shutdown();
  return 0;
}
  • 确认文件路径正确:CMakeLists中指定的src/my_first_node.cpp确实存在于包目录下,无拼写错误。
  • 若文件已有main函数,检查是否存在语法错误(比如函数名拼写错误、命名空间包裹异常等)导致编译器未识别该函数。

内容的提问来源于stack exchange,提问作者Syed Khansa Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:16:06