目录
1. 编译报错‘./lib/libpng.so’
1. 下载
2. 配置参数
3. 编译,安装
2. 对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用
问题分析:
解决办法:
源码编译OpenCV请查看本人博客https://blog.csdn.net/hhaowang/article/details/102636432
安装好所有的依赖项后,编译ORB_SLAM2,只要运行如下的命令就行了:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
解决办法:安装libpng依赖包和zlib包
1) 安装libpng前要安装ZLib
2) ZLib和libpng的目录结构应该是同一级的:
参考:https://blog.csdn.net/aa1600159112/article/details/76664566
下载源码zlib和libpng,编译,安装:
链接:https://github.com/raulmur/ORB_SLAM2/issues/139
链接: https://sourceforge.net/projects/libpng/
参考: 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就好了。
根目录下直接编译即可:
make
sudo make install
这个错误跟opencv库相关,由于TIFF模块缺失导致。
TIPS:终端运行如下指令,查看是否有tiff相关模块
pkg-config --libs opencv
删除OpenCV目录下的build文件夹,重新编译。并且,在cmake编译opencv时候加参数编译-D BUILD_TIFF=ON
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
这类问题的出现说明程序在编译时,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)
原因可能:
从报错以及网上的资料可以发现造成错误的原因主要是由于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
解决办法:
yum install -y libstdc++-static
yum install -y glibc-static
缺少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