从OpenCV源码到arm动态库的全过程

最近两天成功把OpenCV移植到arm开发板,过程中遇到许多问题,于是写下此篇文章记录一番,方便自己日后复习,或许还可以帮助到其他人。OpenCV移植所需要做的东西还是挺多的,所以文章比较长。

移植过程参考了 KayChanGeek 大神的一些关于OpenCV移植的文章。

移植用到的工具如下:

1、Ubuntu 16.04,64位

2、cmake,用于生成编译OpenCV源码的Makefile,可以直接输入如下命令安装:

sudo apt-get install cmake cmake-qt-gui

3、OpenCV源码,3.2.0版本的,各版本源码可到OpenCV官网直接下载

https://www.opencv.org/releases.html

4、交叉编译工具,arm-linux-gcc-4.4.3

编译 OpenCV3.0 以上版本建议使用比较高版本的交叉编译工具,否则编译过程会出现一些奇怪的错误。我试过用4.4.1版本的交叉编译工具去编译 OpenCV3.2.0 ,结果就有奇怪的错误(当时忘记截图了,有点后悔),然后改为4.4.3版本的,就没有那个错误了。

5、需要用到的第三方库,JPEG、PNG这些

第三方库源码可在他们的官网下载到,若懒去找的话可以在这里一并下载我所用到的第三方库和交叉编译工具,里面也有交叉编译环境的搭建过程,具体文件如下图:

移植步骤:

1、交叉编译第三方库

参考自:https://blog.csdn.net/KayChanGEEK/article/details/78550141

先把第三方库复制到虚拟机下任一目录,并在该目录下创建一个文件夹来保存编译后的文件,然后把里面的压缩包全部解压用到的命令如下:

解压.tart.gz使用命令tar -xzvf xxx.tar.gz

解压.tar.bz2使用命令tar -xjvf xxx.tar.bz2</

opencv2.4.4移植ARM 一、编译环境及库文件 linux环境:ubuntu 11.10 交叉编译:4.6.1 opencv: opencv-2.4.4 cmake: cmake-2.8.1-Linux-i386.tar.gz 二、opencv-2.4.4的移植过程 解压cmake-2.8.1-Linux-i386.tar.gz到/usr/local/ cmake-2.8.1 #export PATH= /usr/local/ cmake-2.8.1/bin:$PATH 用到的主要目录说明: 交叉编译工具链所在目录 /usr/local/arm-4.6.1/ 安装opencv的目录 /usr/local/ opencv源码所在目录 /usr/local /opencv-2.4.4 编译好的opencv库所在目录 /usr/local /opencv-2.4.4/build 默认安装目录为/usr/local #mkdir build #cd build #cmake-gui 选择源代码目录 /usr/local /opencv-2.4.4 选择Build目录 /usr/local /opencv-2.4.4/build 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next, Operating System填写arm-linux C Compilers填写/usr/local/arm-4.6.1//bin/arm-none-linux-gnueabi-gcc C++ Compilers填写/usr/local/arm-4.6.1//bin/ arm-none-linux-gnueabi -g++ 程序库的Target Root填写/usr/local/arm-4.6.1/ 然后点击Finish,开始configure 点击Generate生成Makefile(等configure完之后按钮才能点击) #make 错误一: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_core.so: undefined reference to `clock_gettime' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_core.so: undefined reference to `pthread_key_create 解决方法: 修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除 错误二: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy' ../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp' ../../lib/libopencv_high
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值