slam14讲ch6实践及各种问题

首先是装库,首先说明一下我此时的Eigen库版本是3.4.0,网上说会与这个版本相关,我的ceres库不是用的作者的。

1:安装ceres:

安装依赖项:

sudo apt-get install liblapack-dev libsuiteaprse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

安装ceres 2.1.0(下载其他版本也可以类似于这样操作)

下载地址:Tags · ceres-solver/ceres-solver · GitHub

下载完成后解压:

tar -xzvf ceres-solver-2.1.0.tar.gz

解压完成后进行编译安装:

cd ceres-solver-2.1.0
mkdir build
cd build
cmake ..
make -j4
sudo make install

我在安装编译ceres的过程中出现了一个问题,我电脑之前安装了anaconda,在ceres编译的时候链接到anaconda的库里面去了,后面还是把anaconda给卸了。可能会有其他的办法,不过目前暂时不知。如果有人看见这篇记录了知道的也可以告诉我一下,谢谢啦

卸载anaconda环境参考博客:http://t.csdnimg.cn/fak2T

2:安装g2o

安装依赖项:

sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3 

安装g2o:

git clone https://github.com/RainerKuemmerle/g2o  
cd g2o
mkdir build
cd build
cmake ..
make -j4    
sudo make install

3:编译运行过程

3.1编译ceresCurveFitting

首先把CMakeLists.txt里面的C++11改成了C++17

在编译ceresCurveFitting的过程中出现了如下报错:

[ 66%] Linking CXX executable ceresCurveFitting
/usr/bin/ld: /usr/local/lib/libceres.a(thread_pool.cc.o): undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
/usr/bin/ld: /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/ceresCurveFitting.dir/build.make:117:ceresCurveFitting] 错误 1
make[1]: *** [CMakeFiles/Makefile2:113:CMakeFiles/ceresCurveFitting.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2

发现是pthread动态库没有找到,需要指定动态库才行的

在CMakeLists.txt添加一行:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")

编译成功

3.2编译g2oCurveFitting

在编译的过程中出现了make_unique的报错,这里根据报错的内容,把g2oCurveFitting.cpp文件里面make_unique前面的g2o改为std

最后全部编译成功,输出结果与作者相同。

这就是我遇到的全部问题。

参考博客:http://t.csdnimg.cn/vxYgA

                  http://t.csdnimg.cn/lo2Pb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值