系统ubuntu16.04 g2o版本;十四讲里面第三方库提供的版本
在跟高博的一起做rgbd slam的时候使用g2o viewer查看结果时出现错误:
Error in `g2o_viewer': realloc(): invalid pointer: 0x00007f6911493820
经过网上一番搜索与折腾,找到了解决方案,首先是百度第一篇,说是同时安装了qt4和qt5导致了这个问题
https://blog.youkuaiyun.com/abc_orange/article/details/81874218
他的解决方案是要删除qt4,我怕这样做会导致其他软件出现问题,于是就没有采取这种方案。
随后找到了第二种解决方案,可成功解决:
https://blog.youkuaiyun.com/younger671/article/details/79079943
(1)修改:在FindQGLViewer cmake module中添加下面的加粗代码。
find_library(QGLVIEWER_LIBRARY_RELEASE
NAMES qglviewer-qt4 QGLViewer-qt4 qglviewer QGLViewer QGLViewer2
PATHS /usr/lib
/usr/local/lib
/usr/lib/x86_64-linux-gnu # Ubuntu 16.04 and derivatives
/opt/local/lib
/sw/lib
find_library(QGLVIEWER_LIBRARY_DEBUG
NAMES dqglviewer dQGLViewer dQGLViewer2 QGLViewerd2
PATHS /usr/lib
/usr/local/lib
/usr/lib/x86_64-linux-gnu # Ubuntu 16.04 and derivatives
/opt/local/lib
/sw/lib
(2)安装:sudo apt-get install libqglviewer-dev-qt4。
(3)清除已安装的g2o,重新编译并安装g2o。
第一步、第二步其实说的很清楚,第三步清除g2o并重新编译,具体的方法是:
1,执行指令,删除和g2o有关的文件,如提示不存在则说明已经删除了
sudo rm -r /usr/local/lib/libg2o* /usr/local/include/g2o /usr/local/lib/g2o /usr/local/bin/g2o*
2,删除build文件夹里面的所有文件,如果步删除,可能会提示(我碰到了):
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libQGLViewer.so', needed by '../lib/libg2o_viewer.so'。 停止。
CMakeFiles/Makefile2:811: recipe for target 'g2o/apps/g2o_viewer/CMakeFiles/viewer_library.dir/all' failed
make[1]: *** [g2o/apps/g2o_viewer/CMakeFiles/viewer_library.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
3,重新编译安装
cmake ..
make
sudo make install
大功告成,重新打开g2o viewer,已经可以显示了