ORB_SLAM2编译debug 小结

ORB_SLAM2编译debug 小结_第1张图片

目录

1. 编译报错‘./lib/libpng.so’

1. 下载

2. 配置参数

3. 编译,安装

2.  对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用

问题分析:

解决办法:

源码编译OpenCV请查看本人博客https://blog.csdn.net/hhaowang/article/details/102636432


1. 编译报错‘./lib/libpng.so’

 

安装好所有的依赖项后,编译ORB_SLAM2,只要运行如下的命令就行了:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

ORB_SLAM2编译debug 小结_第2张图片

解决办法:安装libpng依赖包和zlib包

1) 安装libpng前要安装ZLib

2) ZLib和libpng的目录结构应该是同一级的:

参考:https://blog.csdn.net/aa1600159112/article/details/76664566

 

下载源码zlib和libpng,编译,安装:

1. 下载

ORB_SLAM2编译debug 小结_第3张图片

ORB_SLAM2编译debug 小结_第4张图片

链接:https://github.com/raulmur/ORB_SLAM2/issues/139

链接: https://sourceforge.net/projects/libpng/


2. 配置参数

参考: https://blog.csdn.net/FruitHardCandy/article/details/84172458

在装libpng的时候,要做的是 在scripts下面的makefile.linux文件拷贝到libpng根目录下重命名为makefile,

然后用命令 ./configure --prefix=/usr/local/libpng ,或者删除原有的configure文件,新建一个空白同名文件,将

--prefix=/usr/local/libpng” 拷贝进去即可,意思就是说,不用configure,直接make就好了。

ORB_SLAM2编译debug 小结_第5张图片

3. 编译,安装

    根目录下直接编译即可:

make

ORB_SLAM2编译debug 小结_第6张图片

sudo make install 

ORB_SLAM2编译debug 小结_第7张图片


2.  对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用

 

ORB_SLAM2编译debug 小结_第8张图片

问题分析:

这个错误跟opencv库相关,由于TIFF模块缺失导致。

TIPS:终端运行如下指令,查看是否有tiff相关模块

pkg-config --libs opencv

 

解决办法:

ORB_SLAM2编译debug 小结_第9张图片

ORB_SLAM2编译debug 小结_第10张图片

     删除OpenCV目录下的build文件夹重新编译。并且,在cmake编译opencv时候加参数编译-D BUILD_TIFF=ON

源码编译OpenCV请查看本人博客https://blog.csdn.net/hhaowang/article/details/102636432

ORB_SLAM2编译debug 小结_第11张图片

I followed the same tutorial for install opencv and I had the same problem. This works for me:

sudo apt-get autoremove libtiff5-dev

sudo apt-get install libtiff5-dev
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

make

3. error: No rule to make target '/usr/lib/libOpenNI.so', needed by 'bin/euroc_rectify'。 停止。

ORB_SLAM2编译debug 小结_第12张图片

 

这类问题的出现说明程序在编译时,CMakeLists.txt 文件没有找到OpenNI.so, 即 Pangolin库未安装或破损。

重新安装pangolin库即可。

1、下载安装包:

git clone https://github.com/stevenlovegrove/Pangolin.git

2、安装依赖(Required Dependencies):
C++11(编译器要有对这个特性的支持)
  安装依赖Glew:

sudo apt-get install libglew-dev

  安装Cmake:

sudo apt-get install cmake (一般这个都会有,有的话就不用安装了)

(建议的依赖)Recommended Dependencies:
  安装Python2/Python3(for drop-down interactive console):

sudo apt-get install libpython2.7-dev

如果还有其他的需求,可以参考REANDEME.txt文档中对应依赖的安装。
3、编译安装Pangolin:

cd [path-to-pangolin(Pangolin路径)]//打开解压后的Pangolin文件夹
mkdir build
cd build
cmake ..
make(或者用cmake --build .)
sudo make install (.h默认安装到了/usr/local/include)

4. 编译ORB_SLAM2 for ROS:/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBAStrip@LIBTIFF_4.0

 

 

原因可能:

从报错以及网上的资料可以发现造成错误的原因主要是由于ros在Kinect的版本中自带了opencv3(通过ros-kinect-opencv3安装)

只好把opencv3删掉,重新安装cv_bridge,并配置环境

1. 卸载

sudo apt-get remove ros-kinetic-opencv3

2. 重新安装cv_bridge

具体参考:

1. https://blog.csdn.net/luo870604851/article/details/103723168?ops_request_misc=%7B%22request%5Fid%22%3A%22158220314819195239814420%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158220314819195239814420&biz_id=0&utm_source=distribute.pc_search_result.none-task

2. https://blog.csdn.net/haithink/article/details/103408623?ops_request_misc=%7B%22request%5Fid%22%3A%22158220282919725247639757%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158220282919725247639757&biz_id=0&utm_source=distribute.pc_search_result.none-task

3. https://blog.csdn.net/gauxonz/article/details/52842099

 


5. 编译报错“/usr/bin/ld: 找不到 -lm /usr/bin/ld: 找不到 -lpthread /usr/bin/ld: 找不到 -lxxx ”的解决办法

ORB_SLAM2编译debug 小结_第13张图片

 

  1. 解决办法:

  2. yum install -y libstdc++-static

  3. yum install -y glibc-static


6. /lib/libcv_bridge.so 对‘boost::re_detail 未定义

 

缺少boost库:

 

1、删除boost1.58(可不删除,因为会删除ROS的一些,谨慎)
libboost1.58-all-dev

注意:在删除boost的时候会提示 要卸载ROS的一些东西,大家根据自己情况而定,因为我会使用ROS所以这一步就没操作

2、下载boost1.60源码
可以从官网上下载,但是速度特别慢

https://sourceforge.net/projects/boost/files/boost-binaries/1.60.0/

推荐在下面的链接进行下载,根据你的系统进行下载:

https://www.boost.org/users/history/version_1_60_0.html

3、解压源码并进入目录
4、查看需要单独编译模块
./bootstrap.sh --show-libraries

5、选择编译模块
./bootstrap.sh --with-libraries= atomic,chrono,container,context,coroutine,coroutine2,date_time,exception,filesystem,graph,graph_parallel,iostreams,locale,with-log,math,metaparse,mpi,program_options,python,random,regex,serialization,signals,system,test,thread,timer,type_erasure,wave
6、编译
sudo ./b2 install

7、复制头文件
sudo cp -a stage/lib /usr
sudo cp -a boost /usr/include

 

你可能感兴趣的:(SLAM开源架构详解)