1.最开始make时报错,显示Eigen版本过低,最低需要3.3.
解决办法:官网下载最新版本Eigen到Slambook2文件夹下安装,编译。
2.
显示缺少/usr/local/include/sophus/common.hpp:42:10: fatal error: fmt/core.h: 没有那个文件或目录
42 | #include <fmt/core.h>
问题原因:高翔讲课编书时是几年前,现在的Sophus库需要依赖ftm库,这说明不能尽信书(尽信书则不如无书),软件/库这些东西一直在发展。还是需要搞懂地层逻辑原理。
解决办法:缺啥补啥,先安装ftm库。
git clone https://github.com/fmtlib/fmt.git
cd fmt
mkdir build
cd build
cmake ..
make
sudo make install
再重新在Sophus文件夹下安装编译Sophus.
3.make[2]: *** [CMakeFiles/useSophus.dir/build.make:84:useSophus] 错误 1
make[1]: *** [CMakeFiles/Makefile2:96:CMakeFiles/useSophus.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2
又报错。 重新安装了一遍Sophus还是一样的错。
然后参考了博客Sophus连接发生错误**_蓝天巨人的博客-CSDN博客
他主要是改了CmakeList.txt文件,然后我照着改了,还是有问题。于是自己不知道怎么改了CmakeList.txt文件改成
cmake_minimum_required(VERSION 2.8)
project(use_sophus)
set(CMAKE_BUILD_TYPE "Debug" )
find_package(Sophus REQUIRED)
include_directories( ${Sophus_INCLUDE_DIRS} )
include_directories("/usr/include/eigen3")
add_executable(usesophus useSophus.cpp)
target_link_libraries(usesophus Sophus::Sophus)
再次make ,就没报错了。正常编译运行终于出结果了。
对比了下原CMakeList.txt文件是把最后一句add_subdirectory(example)改成了target_link_libraries(usesophus Sophus::Sophus)
这个原因大概是作者用example这个文件来统领整个ch4的项目,而我是在ch4这个文件夹下编译运行的。可能是需要在example这个文件夹下编译运行。(好像也不对,猜测的)
二.在运行example时又报错了:[CMakeFiles/trajectoryError.dir/build.make:103:trajectoryError] 错误。
网上找到一篇博客,把CmakeList.txt里面的内容替换调之后重新make,就可以了,参考博客地址为:学习视觉SLAM14讲ch4时,运行example工程,及所遇到的问题汇总(Ubuntu20.04)_MFL_xiaotaiye的博客-CSDN博客