http://download.youkuaiyun.com/detail/liu448077268/7889317 可以去此网址下载所有本文章
Opencv2.0移植ARM(Cortex A8)全过程byHDU刘秀14年9月10日
前言
本人在移植Opencv到ARM-linux系统上经历坎坷的路程,由当初师兄手把手教如何交叉编译移植一个不成功的Opencv1.0的交叉编译库(ffmpeg一直移植不成功)。到之后在项目中需要ffmpeg解码,想方设法曾经利用v4l2进行camrea数据的读取,奈何mjpeg解码迟迟没有成功;项目上问题不得不解决,心想Opencv已经是很成熟肯定能配置成功ffmpeg的,就不断地百度经过半个月的编译终于成功了。于是写下这篇文档帮助那些和我一样遇到这样困难的人,如有错误请联系我将改正。
准备工作
首先得选择一个linux系统,比如Fedora、Redhat、ubuntu等等。讲讲我采用的环境,我也是属于windows这种手残党的,不肯舍弃windows系统。
PC主机:VMware+Ubuntu11.04上进行交叉编译
目标的ARM板:Smart210 with Linux3.0.8
交叉编译器:友善之臂官方提供的 toolchains 4.5.1
我所有的交叉编译库文件都将生成在opencv-arm文件夹中
Opencv2.0移植ARM(Cortex A8)全过程byHDU刘秀14年9月10日
一、交叉编译链的安装
根据友善之臂提供的文件有个arm-linux-gcc的文件夹拷贝到ubuntu中。
1.解压:采用terminal的输入代码的形式比较烦琐,我都是直接手动点解压到当前用户主文件夹(/home/liuxiu/)中,接下来的库文件都是解压到这主文件夹下进行配置安装的。
2.配置环境变量:为了使用方便,在terminal不用输入绝对路径,编辑/etc/bash.bashrc文件添加交叉编译链的路径到环境变量Path中,只要在这个文件中添加下面这 2个语句即可:
PATH=/home/liuxiu/opt/FriendlyARM/toolschain/4.5.1/bin$PATH
export PATH
3.编辑完毕后使用 source /etc/bash.bashrc命令执行以下这个文件,让设置生效,之后再输入:
$ arm-none-linux-gnueabi-gcc -v
如果输出下面的信息则表面设置成功:
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/liuxiu/opt/FriendlyARM/toolschain/4.5.1/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /work/toolchain/build/src/gcc-4.5.1/configure--build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu--target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.5.1--with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root--enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s--with-fpu=vfp --with-float=softfp --with-pkgversion=ctng-1.8.1-FA--with-bugurl=http://www.arm9.net/ --disable-sjlj-exceptions--enable-__cxa_atexit --disable-libmudflap--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'--with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static--with-mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static--with-ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static--with-cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static--with-mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static--with-libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static--enable-threads=posix--with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root--disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.5.1 (ctng-1.8.1-FA)
至此交叉编译链安装完成。
注意:配置环境变量的时候需要在root用户下进行操作,在ubuntu11.04之前都不能用root用户直接登录,可采用terminal下登录root进行环境变量的修改。
二、交叉编译libjpeg
版本jpegsrc.v6b,这些库都可以从官网上下载的。
1.解压进入目录
2.配置选项:
$./configure –prefix=/home/liuxiu/opencv-arm–exec-prefix=/home/liuxiu/opencv-arm –-enable-shared --enable-static
下面分别介绍这几个参数的作用:
--prefix=/home/liuxiu/opencv-arm :执行 make install后,会将与体系无关的文件拷贝到此目录下,具体如下: