十四讲 Eigen和Sophus得版本冲突问题___超长历程

很久后来更新如下:
现在看十四讲第二版,按第二版里自带的第三方库安装没有任何冲突问题,所以出现版本冲突可以去试着装第二版的库,高翔博士的GitHub上就有。


原答案

  • eigen安装:

问题: 如果直接用sudo apt-get install libeigen3-dev,安装的是3.2.92版本,到后边安装Sophus时,最低要求Eigen3.3.0版本,即便用update也没用,但是如果直接安装高于3.3.0的版本,安装Ceres时又不行了,版本又太高

经过一番波折……把Ubuntu恢复到最开始,决定从头重新装。
这次我就直接先在eigen官网下载了3.2.0版的,装在了/home/lib_slam文件下,解压.
(好像解压完就完事了,由于我不知道要不要cmake,就尝试了一下,在解压后的eigen3文件下
mkdir build
cd build
cmake ..
make
sudo make install
然后在usr/local/include文件下多了一个名为eigen3的文件夹。
通常代码里都写#include<Eigen/Core>,这是默认在usr/include文件下找Eigen/Core,但是我的是在usr/local/include/eigen3文件夹下,网上说是可以把Eigen文件复制到默认目录下,应该复制过去之后多了一个Eigen的文件夹,但是我复制过去不是这样,所以也就是没成功,这样我就不能直接在默认目录下找了,只能是在CmakeLists.txt文件下添加绝对路径,如下:
# 添加Eigen头文件
include_directories( "/usr/local/include/eigen3" )
这样就成功了!噢 耶~好开心


  • 安装Sophus

还是下载的压缩包,放在了/home/lib_slam/下,解压,编译(cmake),这个时候发现报错了 ,大概说是“在usr/local/include/eigen3”下找到的eigen是3.2.0版,但最低要求是3.3.0版。

go on…

我又用sudo apt-get install libeigen3-dev下载了eigen,没想到这个居然是3.2.92版,要疯了。。此时,在usr/include/下多了eigen3,这个就是刚下载的3.2.92版的,我也不会删,算了,就放那吧。。。

go on…

eigen官网下载了3.3.5版,压缩包还是放在了放在了/home/lib_slam/
sudo tar -xzvf eigen-eigen-5a0156e40feb.tar.gz -C /usr/local/include:这次我直接把解压后的文件夹放在/usr/local/include下,这条指令将eigen-eigen-5a0156e40feb.tar.g文件解压到了/usr/local/include目录下,在/usr/local/include目录下得到文件eigen-eigen-5a0156e40feb
sudo mv /usr/local/include/eigen-eigen-5a0156e40feb /usr/local/include/eigen335
这条指令将eigen-eigen-5a0156e40feb文件 更名为eigen335

返回重新编译Sophus,发现还是同样的错误,最终在一个博客里找到可以修改/home/lib_slam/Sophus/cmake_modules/FindEigen3.cmake的查找路径,于是开始了瞎改路程…
在这里插入图片描述这是原始的截图,我尝试在红色字PATHS下,各种加路径,比如/usr/local/include/eigen335,发现根本没什么用,继续瞎改:
在这里插入图片描述
最后一行的eigen3改成了eigen335,这样就成功了!!!
哇~好开心!


这次编译Sophus就成功了,安装完成后,执行十四讲里的代码,cmake完成后,make失败,在CMakeLists.txt下加了一句message(STATUS "Include_directories: " ${Sophus_INCLUDE_DIRS}),这句话主要是看查找路径正不正确,因为cmake是成功的,所以加这句话其实也没啥用。加上之后再cmake,结果如下:
在这里插入图片描述
多了红色部分,这的确是正确的sophus查找路径。

make后的错误信息:
在这里插入图片描述
复制了红色部分到百度,有人说是在CMakeLists.txt文件下加上SET( CMAKE_CXX_FLAGS "-std=c++11 -O3"),重新编译了一下,咦?竟然真的成功了!!


同时我还修改了代码里的头文件,把so3.h改成了so3.hpp,因为我见头文件里是写的.hpp,也不知道有没有影响。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值