static assertion failed: Error: GTSAM was built against a different version of Eigen問題修改

1.問題描述:最近在下載編譯BLAM代碼的時候,運行命令./update後出現了下面問題:

/usr/local/include/gtsam/base/Vector.h:72:1: error: static assertion failed: Error: GTSAM was built against a different version of Eigen
 static_assert(

2.原因:原因是GTSAM自帶的eigen和我係統安裝的eigen之間有衝突。GTSAM編譯的時候默認使用了自帶的eigen,而系統中如果還手動安裝過一個eigen的話,就會出現兩個eigen的衝突。

3.解決辦法:解決辦法就是讓GTSAM編譯的時候使用系統的eigen。

首先看一下gtsam編譯在執行了cmake ..後的一段日誌信息:

從這個日誌信息可以看出,GTSAM默認編譯並沒有使用系統eigen。

在GTSAM下修改CMakeLists.txt文件,使得編譯的時候使用系統提供的eigen。

先看一下CMakeLists.txt中eigen編譯相關的部分:

從這裏可以看出,我們只需要修改變量GTSAM_USE_SYSTEM_EIGEN的值就可以了。

在CMakeLists.txt文件中以上判斷的前邊添加如下代碼:

set(GTSAM_USE_SYSTEM_EIGEN ON)

這樣就相當於GTSAM編譯也使用了系統eigen。

然後刪除build,並重新創建build進行編譯。果然再次編譯的時候出現了下面信息:

當GTSAM編譯安裝好後,再次編譯BLAM,就可以解決以上問題。

 

 

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