淘先锋技术网

首页 1 2 3 4 5 6 7

在编译激光雷达ydlidar ros功能包的时候,出现下面错误

一开始大概猜测是c++版本问题。然后去到ydlidar github库去查看,发现了其所使用的c++版本是c++ 11。而本人所使用的系统是Ubuntu14,外加ros indigo 。

而在ROS的Kinetic Kame(May 2016 - May 2021)这个版本之前的所有版本都是在C++03环境下编译的。
Kinetic Kame版本开始使用c++11环境下编译。

在开发过程中,在较早的版本(如indigo)使用了c++标准库的一些函数时,会报错。
因此,应该在你使用了c++11标准库函数的包里CMakeLists.txt文件里添加:
add_compile_options(-std=c++11)。也就是在激光雷达ydlidar_ros_driver的功能包里面CMakeLists.txt里添加。本人在project(ydlidar_ros_driver)下添加。

提示

使用下面命令可以查看gcc版本

gcc -v

使用上面命令,在Ubuntu14中,提示GCC-4.8的版本信息,GCC-4.8使用了最新的C++11标准,但实际中你在编译的时候并没有使用C++11标准,你还是需要在上面的文件中声明才行。