问题:
error: static assertion failed: Error: GTSAM was built against a different version of Eigen
个人在网上看了很多教程
在CmakeList.txt 中进行修改
在 if(GTSAM_USE_SYSTEM_EIGEN) 上方添加一句:
set(GTSAM_USE_SYSTEM_EIGEN ON)
大概在CmakeList.txt 300行的位置,结果都不行
也开始修改LIO-SLAM 的CmakeList.txt,调用Eigen的库,还是不行
最后开始换GTSAM的版本,4.0.2不行,4.1.0不行,4.0.0可以了
gtsam-4.1版本改了也不行
gtsam-4.0.2版本改了也不行
gtsam-4.0.0本版测试可以
下载链接https://github.com/Lcp1/gtsam/tags
个人试了才知道4.0.0版本才适合,不知道其他博主为什么普遍使用4.0.2版本可以。
中途还出现了一个小问题,就是对gtsam进行cmake的时候没设定
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF …
导致运run.launch文件出错
编译原因
在编译的时候GTSAM_BUILD_WITH_MARCH_NATIVE默认是ON
在GtsamBuildTypes.cmake文件中当GTSAM_BUILD_WITH_MARCH_NATIVE为ON时会在编译选项中加入-march=native
设置GTSAM_BUILD_WITH_MARCH_NATIVE为OFF即可解决崩溃问题
原因分析
加入-march=native的意思是根据CPU特性进行指令优化,会让你的程序变得更快,但它要求你的依赖库在编译的时候也使用-march=native。
实际情况是,我们在编译其它库的时候一般不会使用-march=native,甚至有的时候直接是apt-get方式安装的
最后修改完毕实验结果