OpenCV移植到ARM全过程-I

        ->目录

        很早之前(上大学的时候)就想将opencv移植到ARM板子上玩一玩,可惜一直没去试,因为感觉挺复杂的,最近有移植的需求,就在网络上百度了一番,发现大部分移植笔记都比较混乱,每个人都不一样,而且都是比较古老的(ARM9、ARM11、opencv1.0、opencv2.x等等)。所以我想自己从头都到尾的移植一遍,一步步的记录下移植过程!

        前言

        这里选择OpenCV3.2.0移植到三星的exynos4412(Cortex-A9)(注:板子还在某宝待发货)上!开发环境是在VMWare虚拟机上装的Ubuntu16.04(x64)。

        准备材料

        1.opencv源码:https://www.opencv.org/releases.html这边去下吧!我下的是opencv3.2.0。

        2.交叉编译工具:这个我也不知道选什么版本的好,于是只能一个一个试了,我就随便网上百度下了个编译工具是友善之臂的。后面还有许多需要下载的东西,我都打包好了,可以从这里(传送门)下载到,或者你不嫌麻烦也可以一个一个的去找。(下载解压后就是里面名字为arm-linux-gcc-4.4.3.tar.gz的这个东西)。

        3.Ubuntu系统:我这边是16.04,64位版本的。

        开始移植

        首先,安装交叉编译器,在/usr/local下创建目录arm:

        cd /usr/local

       sudo mkdir arm

        将arm-linux-gcc-4.4.3.tar.gz拷贝到/usr/local/arm目录下,进行解压安装:

       sudo tar -zxvf arm-linux-gcc-4.4.3.tar.gz

        然后测试是否安装成功,进入交叉编译器的bin目录下,然后运行:

        sudo ./arm-none-linux-gnueabi-gcc -v

        这时候可能会报错:说找不到arm-none-linux-gnueabi-gcc,可是明明是存在的,而且有可执行权限。辣是因为本系统是64位的,而交叉编译工具是32位的,需要安装32位的兼容(执行sudo apt-get install libc6-i386即可解决)。

        添加交叉编译器到系统环境变量:打开/etc/profile或者/root/.bashrc或者/etc/bash.barhrc在最后一行添加:export PATH = $PATH:/usr/local/arm/······/bin(······代表安装具体安装目录)。然后重启或者source刚才编辑的文件。

       vim /etc/profile或者gedit /etc/profile然后在最后一行添加export PATH = $PATH:/usr/local/arm/······/bin

        source /etc/profile(这个时候你可能会报错,如果报错就参考我的这篇文章解决,如果没有的话则继续)

        测试环境变量是否添加成功:输入:echo $PATH,看输出信息里面是否有刚才配置的路径,有的话继续在任意目录下输入arm-none-linux-gnueabi-gcc -v

        cd /

        arm-none-linux-gnueabi-gcc -v

        如果出现以下信息说明安装成功:


        安装cmake(用于生成编译opencv的Makefile)

        sudo apt-get install cmake cmake-qt-gui

        好的,这篇先介绍到这里,我也是边移植边记录,一步一个脚印,让大家少走弯路!

        

  • 12
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值