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
由于双目测试数据集还没有,等之后熟悉一些我再写点关于这个库的理解。
最近开始接触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
由于双目测试数据集还没有,等之后熟悉一些我再写点关于这个库的理解。
相关文章推荐
- ORB_SLAM编译环境搭建过程当中遇到的问题
- ORB-SLAM2编译遇到的一些问题
- 蘑菇街TeamTalk编译连接过程中遇到的问题及解决方法(iOS)
- 编译QTE时遇到的uic问题及解决过程
- mini2440交叉编译工具安装及使用过程中可能会遇到的问题及解决办法
- 在AndroidStudio编译过程中遇到Error:duplicate files during packaging of APK问题的解决方法
- 编译ORBSLAM2中遇到的一些问题
- Ubuntu16.04+anaconda2+caffe+ssd+opencv3.1.0在编译caffe过程中的问题及解决方法 主要遇到三个问题,前两个是caffe在cmake过程中的问题,后一
- ubuntu11.0.4下编译Android2.3源码过程遇到问题解决【不断更新】
- ubuntu11.0.4下编译Android2.3源码过程遇到问题解决【不断更新】
- 文件系统编译过程中遇到问题,解决过程Kernel panic - not syncing: Attempted to kill init!
- ffmpeg 编译时遇到的make:***[libavcodec-57.so]Errror 1问题
- TeamTalk编译连接过程中遇到的问题及解决方法(iOS)(1)
- Storm编译打包过程中遇到的一些问题及解决方法
- ubuntu11.0.4下编译Android2.3源码过程遇到问题解决
- kerkee demo编译连接过程中遇到的问题及解决方法(iOS)
- ubuntu16.04编译ORBSLAM2问题解决
- Coding编译连接过程中遇到的问题及解决方法(iOS)
- ubuntu12.04 在编译u-boot过程中遇到的问题及解决方法
- live555源码研究(十)------在编译过程中遇到的问题及解决方法