Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug.

可以在https://github.com/stevenlovegrove/Pangolin上下载Pangolin,终端使用如下的指令也OK:git clone https://github.com/stevenlovegrove/Pangolin.git

在安装编译Pangolin之前还需要安装相关的依赖库文件;

在ubuntu环境下主要是OpenGL,ubuntu系统可以使用如下方式安装Pangolin:

* install dependency for pangolin (mainly the OpenGL): 
sudo apt-get install libglew-dev
 
* compile and install pangolin
cd [path-to-pangolin]
mkdir build
cd build
cmake ..
make 
sudo make install 

然而对于centos系统,相应的库文件是什么呢??

搜寻网上很多教程,centos下对应的依赖分别是:

freeglut (相应官网 )

选择对应系统版本的安装文件,例如我的是centos7,选择如下:

最快的终端指令安装方式为:

yum install freeglut
或者,将安装包下载下来安装,

到下载的目录下运行指令安装:

sudo rpm -ih freeglut-3.0.0-8.el7.x86_64.rpm 
 

libGLEW (相应 官网)
选择对应系统版本的安装文件,例如我的是cetos7,选择如下:

可以在终端用指令下载与安装:

yum install libGLEW
或者到下载的目录下运行指令安装:

sudo rpm -ih libGLEW-1.10.0-5.el7.x86_64.rpm
 

libglew-dev (相应官网)
这个库目前我只看到有centos6的,没有高版本的,不知道是否对centos7支持,先下载下来试试(以下证明果然行不通!!!);

可以直接用指令下载安装,不过官网指出需要先创建个文件/etc/yum.repos.d/linuxtech.repo;其内容如下

[linuxtech]
name=LinuxTECH
baseurl=http://pkgrepo.linuxtech.net/el6/release/
enabled=1
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET

然后运行指令:

yum install libglew-devel
或者将安装文件下载下来,我下的是libglew-devel-1.7.0-1.el6.x86_64.rpm

然后用如下指令安装:

sudo rpm -ih libglew-devel-1.7.0-1.el6.x86_64.rpm
提示缺少依赖库文件,如下:

 然后我Google了下,发现这个其实有centos7版本的,地址https://pkges.org/download/glew-devel

地址应该为:https://pkgs.org/download/glew-devel  多谢读者纠正!

选择centos7的下载,文件名为:glew-devel-1.10.0-5.el7.x86_64.rpm

然后用如下指令安装:

sudo rpm -ih glew-devel-1.10.0-5.el7.x86_64.rpm
安装成功(万恶的资源受限,只能FQ)

现在cd 到Pangolin下载的解压目录下,

创建个build, cd到这个build中,然后cmake ..下

[chensq@localhost build]$ cmake ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Build type not set (defaults to release)
-DCMAKE_BUILD_TYPE=Debug for debug
-- Found OpenGL: /usr/lib64/libGL.so   
-- Found GLEW: /usr/lib64/libGLEW.so
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29") 
-- Could NOT find WAYLAND_CLIENT (missing: WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR) 
-- Could NOT find WAYLAND_SERVER (missing: WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR) 
-- Could NOT find WAYLAND_EGL (missing: WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR) 
-- Could NOT find WAYLAND_CURSOR (missing: WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR) 
-- Could NOT find WAYLAND (missing: WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR) 
-- Eigen Found and Enabled
-- libdc1394 Found and Enabled
-- V4L Found and Enabled
-- Performing Test HAVE_FFMPEG_MAX_ANALYZE_DURATION
-- Performing Test HAVE_FFMPEG_MAX_ANALYZE_DURATION - Failed
-- Performing Test HAVE_FFMPEG_AVFORMAT_ALLOC_OUTPUT_CONTEXT2
-- Performing Test HAVE_FFMPEG_AVFORMAT_ALLOC_OUTPUT_CONTEXT2 - Failed
-- Performing Test HAVE_FFMPEG_AVPIXELFORMAT
-- Performing Test HAVE_FFMPEG_AVPIXELFORMAT - Success
-- ffmpeg Found and Enabled
-- libpng Found and Enabled
-- libjpeg Found and Enabled
-- libtiff Found and Enabled

然后 make 

如果make时到了23% 就报了一大堆错误的话,建议换个Pangolin的源进行安装,有博主反应最新的源有些问题,如果你make没有成功,目前换源有两个解决方法:

其中一个源还是stevenlovegrove的,不过下载个老版本的,选择0.5,如下图:

还有一个源是,git clone https://github.com/zzx2GH/Pangolin.git  (参考博客https://blog.csdn.net/zzu_seu/article/details/84866858 )

 

基于换源后,

如果make中出现如下错误:

 /bin/ld: /usr/local/lib/libpython3.6m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC

错误信息非常明白,就是无法生成动态库,需要使用 -fPIC 参数来重新编译 Python。有博主就重新编译安装了下(参考);

 

其实我用的python默认是从anaconda3/bin下的python进去的,而linux系统自带的2.7版本的python在usr/bin/python下

就是说在make过程中没有找到libpython3.6m.a,有博客说直接找到这个文件,然后拷贝到/usr/lib/,/usr/lib64/, /usr/local/lib64/,(参考:未加载到libpython3.5m.so.1.0的解决办法, 未加载libpython3.6m.so.1.0的办法)这个方法我还没尝试,应该可行~

我的方法是以下载个python3.6.5的安装源文件,然后,解压,进入解压文件,按照以下指令安装了下:

./configure --prefix=/usr/local/python3  --enable-shared CFLAGS=-fPIC
 
make && sudo make install

源文件在/home/chensq/Downloads/Python-3.6.5 这个目录下,这个目录下有相应的动态库和python执行文件;

那么索性在cmake Pangolin的时候,将python强行指定到这个路径就行~

 

##切到Pangolin目录下
cd /home/chensq/Downloads/slambook2-master/3rdparty/Pangolin-0.5   
 
##将原来的build文件夹删除,重新cmake
rm -rf build
mkdir build
cd build
 
##强行指定python的路径
cmake -D PYTHON_EXECUTABLE=/home/chensq/Downloads/Python-3.6.5/ ..
 
##然后make 就成功了~
make
sudo make install

参考:

https://blog.csdn.net/qq_32627687/article/details/81105706

https://www.cnblogs.com/laodageblog/p/5993742.html

https://blog.csdn.net/qq_29230261/article/details/87875630
————————————————
版权声明:本文为CSDN博主「ciky奇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c20081052/article/details/101687463