關於在Ubuntu中編譯程序遇到找不到庫或找不到文件的情況

在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、重新編譯項目,不會再報之前的錯誤了。

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