2017年2月8日,那是一個陰天。為了完成高翔博士的《一起做RGB-D SLAM》教程,我在 Ubuntu 14.04 安裝 g2o。遇到困難,怎奈我眼瞎,找錯了方向,浪費時間,沒有成功安裝。
問題如下(跳到最后一個問題描述,直接正常安裝):
g2o_viewer 沒有被安裝
這個大多是因為沒有安裝libqglviewer-dev
(在 Ubuntu 12.04 上這東西叫libqglviewer-qt4-dev
)。
先安裝libqglviewer-dev
,再編譯、安裝 g2o。
g2o_viewer 無法鏈接到 libqglviewer.so
安裝成功 g2o_viewer之后,運行 g2o_viewer 會出現鏈接動態庫失敗的錯誤。
經查找,可以在/usr/local/lib
中找到 libqglviewer.so 文件。錯誤的原因是/usr/local/lib
不在系統查找.so
文件的路徑下。需自行添加路徑。
在/etc/ld.so.conf
文件中添加/usr/local/lib
目錄,然后更新緩存sudo ldconfig
。
在 Windows 下動態鏈接庫.dll
是放置在$PATH
指明的目錄下,或者直接與可執行文件.exe
放置在同一目錄下,而在 Linux 中動態鏈接庫.so
沒有被當做是可執行文件放置在可執行文件應該放置的地方。
g2o_viewer 運行 Segmentation fault
運行 g2o_viewer 會報錯Segmentation fault (core dumped)
,Google 找了很多都沒有解決問題。最后還是回到 Github 這個 repo 的 issues 才找到答案。
鏈接 https://github.com/RainerKuemmerle/g2o/issues/151 中說了是因為在 Ubuntu 14.04 下使用的是 Qt4,而當前的 g2o 版本使用的是 Qt5,所以 g2o_viewer 鏈接了 Qt 兩個版本的動態鏈接庫。
所以解決方案是找到原來使用 Qt4 的 g2o 源碼進行編譯安裝。
看鏈接 https://github.com/RainerKuemmerle/g2o/commits/master 知道在2017年1月13日有一個 commit 是“Switch to Qt5”,所以 git checkout 到之前版本就可以直接正常編譯安裝。