ubuntu使用过程中遇到的一些错误及解决办法

时间:2025-04-26 09:13:23

1.在编译程序的时候遇到下面的错误:

CMake Error at /home/moro/work_ws/devel/share/pcl_ros/cmake/pcl_rosConfig.cmake:106 (message):
Project 'pcl_ros' specifies '/usr/include/ni' as an include dir, which is no found. It does neither exist as an absolute directory nor in '/opt/ros/kinetic//usr/include/ni'

解决办法:该错误的意思是说在/usr/include/下并没有ni文件夹,同时ni文件里应该要有pcl_ros包,我们可以cd /usr/include ,然后mkdir ni,接下来去下面的网址下载perception_pcl包,在主目录下解压缩。

/ros-perception/perception_pcl/tree/kinetic-devel

将里面的pcl_ros移动到刚刚建立的usr/include/ni目录,解决!

sudo  mv ~/perception_pcl-kinetic-devel/pcl_ros /usr/include/ni/

2.编译过程中出现如下错误:

make[2]: *** No rule to make target '/usr/lib/', needed by '/home/moro/work_ws/devel/lib/libcostmap_2d.so'。 停止。

大致意思是/usr/lib/目录下缺少动态库文件,可以在整个电脑里查找是否有该文件,没有该文件的话就去下载,有该文件的话就把文件复制到/usr/lib/目录下。我是在主文件夹之前装的kinect V1驱动包里找到了该文件,所以直接复制就解决了。

sudo cp ~/software/OpenNI-Bin-Dev-Linux-x64-v1.5.7.10/Lib/ /usr/lib/

3.在编译ROS相关源码包的时候出现以下两种错误:

/opt/ros/kinetic/include/ros/internal/condition_variable.h:45:7: error: expected nested-name-specifier before 'condition_variable_monotonic'
using condition_variable_monotonic = boost::condition_variable;
/opt/ros/kinetic/include/ros/callback_queue.h:166:18: error: ‘condition_variable_monotonic’ in namespace ‘ros::internal’ does not name a type
   ros::internal::condition_variable_monotonic condition_;

解决办法:在终端输入

sudo gedit /opt/ros/kinetic/include/ros/internal/condition_variable.h

将第45行的

using condition_variable_monotonic = boost::condition_variable;

注释掉,并在下面添加一行

typedef boost::condition_variable condition_variable_monotonic;

保存即可。

编译navigation源码包的时候出现一堆类似下面的错误,主要意思就是依赖tests不存在:

CMake Error at navigation/clear_costmap_recovery/:50 (add_dependencies):
  The dependency target "/opt/ros/kinetic/lib/" of target
  "tests" does not exist.

解决方法:打开文件navigation/clear_costmap_recovery/,将第50行

add_dependencies(tests clear_tester ${catkin_LIBRARIES})

注释掉即可,然后重新编译就可以了。