视觉slam十四讲ch5 编译的库版本问题(fmt,sophus)

文章主要讲述了在学习高翔视觉SLAM十四讲第二版第五章时遇到的编译问题,包括CmakeLists的配置、fmt库和Sophus库的依赖问题。作者提供了修改CmakeLists以适应C++14标准的方法,以及安装fmt和Sophus库的详细步骤,特别是fmt8.1.1和Sophus1.0.0版本的安装,以解决编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ubuntu系统:22.04

高翔视觉slam十四讲(第二版)

笔者在学习ch5中joinMap的代码时,发现代码怎么都编译不通过,经过一些列尝试后顺利解决,现在分享一下体会。

1. CmakeLists的配置问题

2. fmt库的依赖问题

3. Sophus库的版本问题

首先是CmakeLists的问题,原书中给的文件里的代码是没法运行的,需要增加一些配置,其中尤其要注意的是,如果你的库版本比较高,CmakeLists中的c++11声明需要删除/注释掉,或者修改成c++14,高版本的sophus和pangolin需要c++14的支持,否则编译会失败。

#链接c++11

set(CMAKE_CXX_FLAGS "-std=c++14") 

完整的CmakeLists代码如下:

project(rgbd)

cmake_minimum_required(VERSION 3.10)

find_package(Sophus REQUIRED)

add_executable(joinMap joinMap.cpp)

include_directories(${Sophus_INCLUDE_DIRS})

#链接OpenCV库

find_package(OpenCV REQUIRED)

#添加头文件

include_directories( ${OpenCV_INCLUDE_DIRS})

target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})


find_package(Pangolin REQUIRED)


target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})


# Eigen

include_directories("/usr/local/include/eigen3")

target_link_libraries(joinMap ${Sophus_LIBRARIES} fmt)



#链接c++11

set(CMAKE_CXX_FLAGS "-std=c++14") 

另外还有fmt依赖库的问题

在第二版的书中Sophus库是带模板的Sophus库,而第一版是书用的是不带模板的Sophus库

安装带模板的Sophus库需要提前安装对fmt的依赖库,在此我安装的是fmt 8.1.1版本

1. 下载(fmt-8.1.1

解压到库文件所在的地方,在解压后的文件夹里打开终端

2. 编译fmt

mkdir build
cd build
cmake ..
cmake --build .
sudo make install

然后安装Sophus库,这里要注意得安装sophus 1.0.0版本,更高版本会导致编译出现以下错误:

/usr/bin/ld: 找不到 -ltinyobjfmt: 没有那个文件或目录
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/joinMap.dir/build.make:132:joinMap] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/joinMap.dir/all] 错误 2
make: *** [Makefile:91:all] 错误2

1. 下载sophus(sophus-1.0.0

解压到库文件所在的地方,在解压后的文件夹里打开终端

2. 编译Sophus

mkdir build
cd build
cmake ..
cmake --build .
sudo make install

至此应该顺利安装,如有其他小问题,可留言。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值