1. 程式人生 > >opencv2.4.9在Hi3516A開發板上移植

opencv2.4.9在Hi3516A開發板上移植

opencv2.4.9下載不用說了。

Ubuntu12.04虛擬機器安裝的+arm-hisiv200-linux交叉編譯器+cmake-gui(2.8.7)

參考:http://blog.csdn.net/luotuo44/article/details/8958990

http://blog.sina.com.cn/s/blog_92942dba0101d1wj.html

一、建立編譯環境配置

進入opencv-2.4.9目錄建立release-hisiv200目錄存放編譯過程中檔案。

#cd opencv-2.4.9

#mkdir release-hisiv200

#cd release-hisiv200

開啟cmake-gui,進行部落格中的配置:#cmake-gui

在configure時選擇CMAKE_SYSTEM_NAME:arm-hisiv200-linux

C:選擇/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc

C++:選擇/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-g++

修改安裝目錄:CMAKE_INSTALL_PREFIX:/opt/2.4.9-arm-hisiv200

進行編譯:make

二、出現問題:

1、/usr/lib/libImath.so:could not read symbols: File in wrong format

collect2: ld returned 1exit status

make[2]: ***[lib/libopencv_highgui.so] 錯誤 1

make[1]: ***[modules/highgui/CMakeFiles/opencv_highgui.dir/all] 錯誤 2

make: *** [all] 錯誤 2

主要opencv編譯OPENEXR時要用到libImath.so,所有我就把那個取消了,然後編譯就沒出現過這個問題。

藍色的部分不要選,還有下面這個也別選:

藍色的部分不要選,還有下面這個也別選:

接在make:

2、LinkingCXX executable ../../bin/opencv_test_calib3d

../../lib/libopencv_core.so:undefined reference to `pthread_key_create'

../../lib/libopencv_core.so:undefined reference to `pthread_getspecific'

../../lib/libopencv_ts.so:undefined reference to `pthread_key_delete'

../../lib/libopencv_core.so:undefined reference to `pthread_once'

../../lib/libopencv_core.so:undefined reference to `clock_gettime'

../../lib/libopencv_core.so:undefined reference to `pthread_setspecific'

collect2: ld returned 1exit status

make[2]: ***[bin/opencv_test_calib3d] Error 1

make[1]: ***[modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2

make: *** [all] Error 2

  解決方案:修改release-hisiv200目錄下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原來為空,加上-lpthread-lrt,如下圖:

3、../../lib/libopencv_ocl.so:undefinedreference to 'dlopen'

取消掉上面兩個複選框。

接在編譯。完成。

三、安裝opencv庫

#make install

在/opt/2.4.9-arm-hisiv200/目錄下生成相應目錄:

四、配置編譯環境

如果沒有安裝pkgconfig則進行安裝

參考http://blog.csdn.net/luotuo44/article/details/24836901

在/opt/2.4.9-arm-hisiv200/目錄下建立pkgconfig目錄,進入目錄建立hisiv200-opencv.pc檔案

#gedit hisiv200-opencv.pc

輸入圖中的內容。

編輯庫連線配置檔案

加入下面圖中一行

配置PKG_CONFIG_PATH

#gedit /etc/bash.bashrc

最後一行加入上圖PKG_CONFIG_PATH配置。

#source /etc/bash.bashrc

五、編譯測試程式

測試程式picLike.cpp內容為:

問題:

將opencv庫檔案拷貝到/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/lib目錄下

重新編譯,問題解決。

六、在Hi3531上進行測試

1、因為hi3531空間不足,掛載程式執行。

#

2、配置環境變數

3、進入可執行程式目錄執行程式

4、解決問題:從../../lib/libopencv_core.so建立了../../lib目錄拷貝opencv庫檔案到此目錄下,執行程式出現錯誤:Segmentation fault

5、將程式拷貝到相對於本來opencv庫目錄相對的目錄下。

執行程式:

問題解決。