error: static assertion failed: Error: GTSAM was built against a different version of Eigen

问题:
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方式安装的

最后修改完毕实验结果
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部