编译ROS工程的时候遇到找不到ros头文件的问题

在编译自己写的头文件的时候,有时候会遇到找不到ros头文件,ros消息的问题,大致如下:

CMakeFiles/tom_odometry.dir/src/tom_odometry.cpp.o: In function `main':
tom_odometry.cpp:(.text+0x72): undefined reference to `ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
tom_odometry.cpp:(.text+0x104): undefined reference to `ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)'
tom_odometry.cpp:(.text+0x1b9): undefined reference to `ros::Rate::Rate(double)'
tom_odometry.cpp:(.text+0x1ca): undefined reference to `ros::ok()'
tom_odometry.cpp:(.text+0x250): undefined reference to `ros::Time::now()'
tom_odometry.cpp:(.text+0x640): undefined reference to `ros::Rate::sleep()'
tom_odometry.cpp:(.text+0x6b0): undefined reference to `ros::Publisher::~Publisher()'
tom_odometry.cpp:(.text+0x6bf): undefined reference to `ros::NodeHandle::~NodeHandle()'
tom_odometry.cpp:(.text+0x7c3): undefined reference to `ros::Publisher::~Publisher()'
tom_odometry.cpp:(.text+0x7d2): undefined reference to `ros::NodeHandle::~NodeHandle()'
CMakeFiles/tom_odometry.dir/src/tom_odometry.cpp.o: In function `ros::Publisher ros::NodeHandle::advertise<visualization_msgs::Marker_<std::allocator<void> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)':
tom_odometry.cpp:(.text._ZN3ros10NodeHandle9advertiseIN18visualization_msgs7Marker_ISaIvEEEEENS_9PublisherERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjb[_ZN3ros10NodeHandle9advertiseIN18visualization_msgs7Marker_ISaIvEEEEENS_9PublisherERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjb]+0xdd): undefined reference to `ros::NodeHandle::advertise(ros::AdvertiseOptions&)'
CMakeFiles/tom_odometry.dir/src/tom_odometry.cpp.o: In function `void ros::Publisher::publish<visualization_msgs::Marker_<std::allocator<void> > >(visualization_msgs::Marker_<std::allocator<void> > const&) const':
tom_odometry.cpp:(.text._ZNK3ros9Publisher7publishIN18visualization_msgs7Marker_ISaIvEEEEEvRKT_[_ZNK3ros9Publisher7publishIN18visualization_msgs7Marker_ISaIvEEEEEvRKT_]+0x47): undefined reference to `ros::console::g_initialized'

遇到这类问题基本都是CMakeLists或者package.xml文件中缺少包含对应的库或者依赖项,主要检查以下几点:

CmakeLists:

  1. find_package()
  2. catkin_package()
  3. include_directories()
  4. add_executable()
  5. target_link_libraries() -> 这点容易忽略

package.xml

  1. <build_depend>xxx</build_depend>
  2. <build_export_depend>xxx</build_export_depend>
  3. <exec_depend>xxx</exec_depend>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值