ubuntu下cmake設定opencv鏈結庫

2021-09-26 09:21:10 字數 2068 閱讀 1730

問題1:

在編譯視覺slam十四講第九講的時候,出現如下錯誤: undefined reference tocv::string::allocate(unsigned long)' cmakefiles/run_vo.dir/run_vo.cpp.o: in functioncv::mat::~mat()』:.詳細錯誤如下圖:

問題2:

通過建立opencv3.1的靜態連線後解決了上述問題,再次編譯,又出現:could not find cuda: found unsuitable version 「7.5」, but required is exact version 「8.0」 (found /usr)的報錯,這是由於我系統安裝了兩個cuda版本cuda7.5和cuda8,系統預設的軟鏈結為cuda7.5.而錯誤提示需要用cuda8.0.為了不破壞系統原有的軟鏈結,考慮直接在cmake過程中鏈結cuda8.0.

問題1:

第一步:查詢opencvconfig.cmake的位址.

locate opencvconfig.cmake
原理:由於cmakelists中的find_package(opencv required)會在ubuntu系統中找到opencvconfig.cmake,該檔案中包含了opencv_include_dirs和opencv_libs 等變數,從而通過 include_directories和target_link_libraries來訪問這兩個變數。所以找到原始碼編譯的opencv3.1中的opencvconfig.cmake位址.

第二步:修改cmakelists中opencv的軟鏈結.

set(opencv_dir /home/canfly/downloads/opencv-3.1.0/build/) //設定opencvconfig.cmake的位址

find_package(opencv required) //在設定的位址下,查詢opencv

include_directories($) //新增引用目錄

原理:在cmake中設定opencv的查詢位址為原始碼編譯的新位址,從而可以繼續使用cmakelists原來的find_package()等函式.

第三步:重新cmake和make

cmake ..

make

到此,第乙個問題opencv的問題解決爆出第二個cuda版本不對的問題.

解決思路就是連線正確的cuda版本位址.

問題2:

cat /usr/local/cuda/version.txt  //查詢cuda版本

cmake -d cuda_toolkit_root_dir=/usr/local/cuda-8.0 .. //原理參考連線3

本問題主要集中在如何在cmakelists.txt中設定opencv的軟鏈結.通過類似方法,對於eigen,ceres和g2o等第三方軟體都可以直接設定對應的鏈結位址.不用在糾結到底軟體裝在哪了.

參考:

ubuntu中使用cmake鏈結opencv庫的兩種方法

ubuntu16.04檢視opencv安裝路徑以及版本號

cmake error: could not find cuda-unsuitable version 「8.0」,but required is exact version 「9.0」

ubuntu下安裝cmake及cmake簡單使用

前言 最近突然想將開發環境轉移到linux上,同時也準備閱讀些github上的開源 發現現在開源專案一般都是用cmake管理的。所以就在自己的虛擬機器上搗鼓了一天。一開始我也不知道cmake是啥,後來通過折騰也大概知道其作用,它所做的事其實就是告訴編譯器如何去編譯鏈結源 你也許想問不是有makefi...

ubuntu下更新cmake版本

1 解除安裝當前舊版本的cmake 檢視當前的cmake版本 cmake version 若版本較舊,執行 sudo apt remove cmake,解除安裝舊版的cmake 若當前系統無cmake,可跳過這一步。2 安裝依賴 sudo apt install build essential li...

ubuntu下cmake管理c 工程

cmake 是乙個跨平台的自動化建構系統,它使用乙個名為 cmakelists.txt 的檔案來描述構建過程,可以產生標準的構建檔案,如 unix 的 makefile 或windows visual c 的 projects workspaces 檔案 cmakelists.txt 需要手工編寫,...