opencv2.4.9在Hi3516A开发板上移植
opencv2.4.9下载不用说了。Ubuntu12.04虚拟机安装的+arm-hisiv200-linux交叉编译器+cmake-gui(2.8.7)参考:http://blog.csdn.net/luotuo44/article/details/8958990http://blog.sina.com.cn/s/blog_92942dba0101d1wj.html一、建立编译环境
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库目录相对的目录下。
执行程序:
问题解决。
更多推荐
所有评论(0)