目錄今天遇到了乙個很有意思的報錯。
事情是這樣的, 在編譯《視覺slam十四講》第12章的乙個程式時,編譯器報了「未定義的引用」的錯誤。該程式使用了dbow3
這個庫,而這個庫又是依賴opencv
的。dbow3
這個庫經過編譯之後會生成乙個靜態鏈結庫並被安裝在/usr/local/lib
路徑下。
未定義的引用錯誤使我我意識到這是鏈結庫出了問題。經過一番折騰,發現原因是這樣的。我的虛擬機器裡安裝的是最新的opencv 4.1.1
版本,但同時也安裝了ros
,而ros
裡自帶了乙個opencv 3.3.1
的版本。在編譯dbow3
庫的時候,不知是何原因,cmake
搜尋到的是3.3.1
版本的opencv
,因此dbow3
的鏈結庫鏈結的是3.3.1
版本的opencv
動態庫。但是第12章裡的程式所引用的卻是4.1.1
版本的opencv
的標頭檔案,所以在去鏈結dbow3
的靜態庫的時候自然就報了未定義的引用的錯誤了。
於是,修改dbow3
的cmakelists.txt
檔案,使用opencv 4.1.1
作為其依賴,重新編譯並安裝dbow3
庫,問題得以解決!
順便再多囉嗦幾句,我檢視了cmake
的cmake_module_path
變數的內容,發現它指向的路徑是/usr/local/lib/cmake
和/usr/lib/cmake
,而這兩個路徑下是沒有findopencv.cmake
檔案的,相反,opencv在安裝時提供了opencvconfig.cmake
檔案,該檔案在/usr/local/lib/cmake/opencv4/
路徑下。所以,你只需要在dbow3
庫的cmakelists.txt
檔案中指定opencv_dir
為前面所提到的路徑值即可。這樣cmake
就能夠找到4.1.1版本的opencv了。
master和minion版本不一致問題
問題 生產環境,不同系統伺服器安裝的salt minion不一致,導致部分功能無效 現像一 1,grains匹配失效 2,高版本python2.6不支援,centos6預設安裝2.6 解決 統一安裝2015.8.13版本 ubuntu16 wget o sudo apt key add deb xe...
cjson庫版本不一致,導致解析失敗
在編譯乙個程式demo的時候,需要繼承乙個第三方庫libexample.so,第三方庫用到了cjson,本身這個程式也用到了cjson,由於兩者用的cjson的版本不一致,導致json解析失敗 第三方庫libexample.so使用的舊版本的cjson,cjson types截圖如下 程式demo使...
NV顯示卡軟體版本不一致執行TensorFlow出錯
當使用nv顯示卡執行tensorflow出錯時,如下 failed s.ok could not find cudnncreate in cudnn dso dlerror cudnn 需要檢查cudnn的版本與cuda的版本一致。否則就會出上面這個錯誤。我這裡使用這兩個版本沒有問題 cuda 8....