您的位置:首页 > 其它

ORB-SLAM2编译过程中遇到libavcodec.a问题解决

2016-10-26 15:44 676 查看
http://blog.csdn.net/u014629875/article/details/51347132

最近开始接触SLAM的东西,在初步做了一些了解之后,接触到了ORB-SLAM,知乎上有关于这个的讨论:orb-slam在众多SLAM方法中处于怎样的地位?。 

ORB SLAM项目主页:http://webdiis.unizar.es/~raulmur/orbslam/ 

现在已经有ORB SLAM2了,鉴于它提供双目的接口,就打算去试试。

我的系统ubuntu 14.04 LTS。

源码地址:https://github.com/raulmur/ORB_SLAM2 

这个库的编译主要的依赖:OpenCV,Eigen3,g2o,DBoW2,另外还有一个UI库Pangolin。其中g2o和DBoW2在它的Thirdparty文件夹中就有,作者还写了一个脚本build.sh,依赖库准备好后只需要到的目录下,然后运行这个即可:

cd path 

chmod +x build.sh 

./build.sh

而且ORB-SLAM2并不需要依赖ROS,编译还是很方便的。但是我在编译Pangolin的时候遇到了很多问题,这里记录一下。

Pangolin源码:https://github.com/stevenlovegrove/Pangolin 

终端进入目录,执行:

cd path 

mkdir build 

cd build 

cmake .. 

make

然后在make的时候就出现了:

/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1’ can not be used when making a shared object; recompile with -fPIC 

/usr/local/lib/libavcodec.a: error adding symbols: Bad value 

collect2: error: ld returned 1 exit status

网上查了很多,给的解决方法都是这些:

找到configure 文件,在类似这个位置修改echo make CC=$GCCPATCH/bin/gcc -fPIC

.

(1)在makefile文件里的CFLAGS里加上 -fPIC选项,这样可以一劳永逸 

(2)如果你的makefile很大,CFLAGS也不明确,那就在配置时手动加上:CFLAGS=”-fPIC” ./configure …………..如果这样还不行,你需要试一下sudo:$sudo CFLAGS=”-fPIC” ./configure …………..

.

在configure的时候加上 –enable-shared和–enable-pic这两个选项

下面这个没怎么看懂,也不知道该怎么尝试,不过挺有趣的

Linux共享对象之编译参数fPIC

但是Pangolin源码没有Configure文件,无从修改,然后我对MakeFile也不了解,改了半天只是越改越糟糕。之后在Stackoverflow看到了这个:http://stackoverflow.com/questions/25539034/opencv-make-fails-recompile-with-fpic,因为之前倒腾FFmpeg的时候弄得很乱,所以很有可能就是FFmpeg的问题。

重下了FFmpeg:http://ffmpeg.org/download.html#releases 

配置是使用CFLAGS="-O3
-fPIC" ./configure --enable-gpl --enable-version3 --enable-shared --enable-nonfree --enable-postproc --enable-x11grab --enable-gray --enable-small --enable-bzlib

然后执行make;make install
用下面的方法重新编译了FFmpeg,就没有上面的问题了,然后ORB-SLAM2的编译就很顺利了。

./configure –enable-nonfree –enable-pic –enable-shared 

make 

make install

这里提一下一个问题,FFmpeg别装3.0.2的,因为API都变更了,编译的时候会找不到。 

这里有一些别人整理出来的变更记录:http://blog.csdn.net/leixiaohua1020/article/details/41013567

由于双目测试数据集还没有,等之后熟悉一些我再写点关于这个库的理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: