網絡上很多移植編譯的方法比較老,多數針對OpenCV 1.0,而且方法很麻煩,不仔細操作很容易出錯,我的方法是盡可能的利用現成的工具,盡量圖形化界面配置操作,友善編譯配置。
主控端:Ubuntu 12.04 32bit
開發闆:OK6410
OpenCV: 2.4.3
其他:
arm-linux-g++ 4.3.2 / arm-linux-gcc 4.3.2
CMake-gui 2.8.10
OpenCV 2.2以後版本需要使用Cmake生成makefile檔案,是以需要先安裝cmake。
ubuntu下安裝cmake比較簡單,
apt-get install cmake
如果覺得自帶的版本不符合要求,可以下載下傳安裝包。
下載下傳最新版的安裝包:
<a href="http://www.cmake.org/cmake/resources/software.html">http://www.cmake.org/cmake/resources/software.html</a>
這裡下載下傳已經編譯好的,這樣隻需要解壓至需要的目錄下即可使用:
tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/
設定環境變量:
sudo gedit /home/emouse/.bashrc
在打開的檔案後添加:
export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin
檢視版本,測試是否安裝成功:
root@emouse:/home# cmake --version
cmake version 2.8.10.2
解壓OpenCV壓縮檔案,得到檔案夾。
#cmake-gui 打開cmake的gui界面,開始進行配置,配置過程如下圖所示:
1、標明解壓後的源檔案和将要編譯的檔案目錄,這個自己之前先建好。
2、點選Configure 選擇工程類型,選擇交叉編譯,點選下一步。

3、在下圖的界面中選擇交叉編譯工具鍊以及庫檔案相關資訊,按照圖中的進行填寫,其中紅框部分為交叉編譯工具鍊的實際路徑,根據主控端實際安裝路徑填寫。
4、點選Finsh完成初步配置。
5、此時主界面如下圖所示,這時Cmake會讀取程式的一些配置資訊,可以再下圖紅框中對每一個編譯選項進行修改,這裡去掉WITH_TIFF支援并修改安裝路徑,其他配置可以根據需求選擇。
通過終端進入OpenCV-ARM目錄,make編譯,編譯過程中出錯如下:
<a></a>
關于TIFF的報錯,是因為一開始我勾選了TIFF的支援,而這個支援是需要主控端中安裝相應的程式的,是以報錯,可以打開cmake 去掉勾選。 其他報錯經過查找找到以下解釋:
編譯時發現如下錯誤: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libcxcore.so: undefined reference to `clock_gettime' ../../lib/libcxcore.so: undefined reference to `pthread_key_create' ../../lib/libcxcore.so: undefined reference to `pthread_getspecific' ../../lib/libcxcore.so: undefined reference to `pthread_setspecific' 原因是cmake不認識我定義的arm-linux系統标記,沒有加上庫pthread和rt的連結選項 此時需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原來為空,加上-lpthread -lrt
按照此方法更改對應檔案,如下圖所示:
此處在CMakeCache.txt 的173行,添加-lpthread -lrt,然後繼續編譯。編譯過程十來分鐘左右,編譯成功結果如下:
運作make install進行安裝,在我的安裝目錄中就會多出以下幾個檔案夾:
lib檔案夾即生成的庫檔案,拷貝到開發闆對應目錄即可。
本文轉自emouse部落格園部落格,原文連結:http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html,如需轉載請自行聯系原作者