Cartographer superbuild编译失败:
编译环境:Ubuntu 16.04; ROS-kinetic
问题描述
`
make时候遇到以下错误,记录下解决方法
原因分析:
/usr/bin/ld: /usr/local/lib/libgmock_main.a(gtest-all.cc.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/lib/libgmock_main.a(gmock_main.cc.o): relocation R_X86_64_32 against
.rodata’ can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib/libgmock_main.a(gmock-all.cc.o): relocation R_X86_64_32 against `.rodata’ can not be used when making a PIE object; recompile with -fPIC
出问题的是gtest-all.cc.o,gmock_main.cc.o,gmock-all.cc.o这几个文件,推测是gtest,gmock库的问题
解决方案:
重新安装gtest&gmock
1.从git上下载googletest包,git地址: https://github.com/google/googletest/tree/release-1.8.0
2.解压后进入googletest-release-1.8.0
cd googletest-release-1.8.0
3.编译googletest
cd googletest/
mkdir build
cd build
cmake …
sudo make install -j4
4.编译googlemock
cd …/…
cd googlemock/
mkdir build
cd build
cmake …
sudo make install -j4
5.再次编译cartographer superbuild就顺利通过了