Opencv编译arm平台的静态和动态库

来源:互联网 发布:免费局域网控制软件 编辑:程序博客网 时间:2024/05/16 07:15

opencv 2.4.12移植到arm详细教程
opencv2.4.12
ubuntu12.04
GCC 4.3.2
1.首先下载编译器,解压,设置环境变量,完成后,在终端输入arm后按Tab键,若出现arm的相关的内容,则表示配置正确;
参考:http://blog.csdn.net/luotuo44/article/details/8958990
2.下载cmake,
sudo apt-get install cmake-gui
3.完成以上两步后,现在来进行编译。网上的教程说的很详细了,这里只提几点问题:
onion31s@ubuntu:~/ cmake-gui // 启动cmake
在cmake界面中进行配置
第一步:这里写图片描述

第二步:这里写图片描述

第三步:这里写图片描述

第四步:这里写图片描述

第五步:这里写图片描述

4.按照上述配置完成后,进入下图划红线的目录(进入自己配置的目录)

onion31s@ubuntu:~/ cd /home/onion31s/A31s_Source_lib/opencv_build
onion31s@ubuntu:~/ make
鉴于网上的参考教程,大多数人这里会报错,这里将错误总结如下:
(1)报错:
Linking CXX executable ../../bin/opencv_test_calib3d
../../lib/libopencv_core.so: undefined reference to pthread_key_create'
../../lib/libopencv_core.so: undefined reference to
pthread_getspecific’
………………..
collect2: ld returned 1 exit 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

或者
报错:undefined reference to “dlopen”
undefined reference to “dlysm”
解决方案:修改这里写图片描述 目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,保险起见,加上-lpthread -lrt -ldl,如下图:
这里写图片描述
(2)报错:……xxx.cpp internal compiler error:in vect_transform_stmt ,at tree-vect-stmts.c…..
解决方案:这是编译器的Bug建议换个低版本的编译器重新操作;
(3)报错:“……could not read symbols:bad value”
解决方案:进入 cd /home/onion31s/A31s_Source_lib/opencv_build/3rdparty/zlib/CMakeFiles/Zlib.dir/flags.make
将C_FLAGS= -w -Wall 替换成 C_FLAGS=-03 -fPIC -w -Wall
5.报错按照上述方法解决,再make后,执行sudo make install ,此时编译好的库就按照在你指定的目录下了.

6.进入上述的安装库,若没有取消BUILD_SHARED_LI选项,则生产的是.so后缀的库文件,将这些库文件拷贝到板子的/lib目录下。
7.在Ubuntu上编译的时候,编译指令如下:
这里写图片描述
其中的路径对应到你安装库文件的路径。
8.如果你是静态编译,将上述命令中的.so库文件替换成.a库文件,再在指令最后添加 -static,这样你无须拷贝任何库文件到板子上,直接编译后拷贝编译后的文件在板子上直接即可运行。
现在你的板子上可以跑opencv写的程序了。

qq:3140606578

0 0
原创粉丝点击