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庫目錄相對的目錄下。
執行程式:
問題解決。