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,就可以解決以上問題。