关于

在Ubuntu中编译程序遇到找不到库或找不到文件的情况,可以试着看下cmakelist 下面的include包含进来的库,可能是这里的库找不到该文件,

有一种情况是,这些库编译时是依赖当时的编译环境和相应程序的历史版本,而当前因为更新了一部分库,所以整个系统库版本之间的依赖关系发生了变化,由于很多库是指定软件版本的,且很多软件不向下兼容历史版本,所以会提示无法找到对应库的情况。解决的方法是,

1、通过apt-get install 或者apt-get-install ros-kinetic-xxx-ros 方式安装将所有依赖库重装,而不采用源码编译的方式。然后再重新编译程序。

2、重新用源码编译所依赖的库,再重新编译程序。

以上方法的关键是重新梳理一下各个依赖库不同版本的依赖关系。

例如:

某项目编译需要Pcl,之前源码编译安装pcl 1.8的时候用的是vtk5.0 的版本,而某项目需要的是6.2版本的vtk,项目的cmakelist中include 了 pcl。于是报错找不到vtk5.0的相应文件。实际上项目没有直接依赖vtk5.0 项目用的是6.2的版本,但报的确实找不到vtk5.0的错误。

解决方法是:

1、卸载所有关于vtk5.0的相关库,apt-get方式安装vtk6.2的版本

2、通过Apt-get方式重新安装pcl1.7的版本,此时pcl依赖的是vtk6.2的版本,项目也依赖的是vtk6.2的版本,现在依赖库终于统一了,

3、重新编译项目,不会再报之前的错误了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章