在编译的时候可以留意一下gtsam源码第三方库路径下存在一个版本的eigen:
/usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Macros.h
而我们系统里面也存在一个版本的eigen:
/usr/include/eigen3/Eigen/src/Core/util/Macros.h
查看两个eigen版本就会发现,大可能不能运行的原因是,编译gtsam的源码,最后生成的在local下的东西,使用的是gtsam源码的eigen,但是一旦在本机运行的时候,链接的是本地的eigen。
解决方式,
1、笔者系统 ubuntu20.04,系统自带eigen版本是 3.3.7,可以下载gtsam4.0.0版本,两个eigen版本重合
2、gtsam编译的时候指定链接的eigen版本,这样生成在local的gtsam运行也会链到系统版本,就是晚上说的 set(GTSAM_USE_SYSTEM_EIGEN ON)
为了不修改原作者代码原则,建议安装的时候查看好自己系统内第三方库的版本,统一为准,万不得已自己链接