首先要说明一点:虽然移植的教程很多,也有比较全。但是都是只说了一部分,我本人按照他们的做,多多少少都会遇到这样或者那样的问题,然后就再找其他的博客或者论坛。很不方便。所以就想根据自己的亲身经历,也算给自己留一点资料。不过可能不会太详细,最近工作忙,有时间再把图补上吧。
对于opencv,大家都知道是做图像处理的。所以就需要一些图像解码的库。比如:
|--------zlib
|--------jpeg
|--------libpng
|--------tiff
|--------ffmpeg
|--------|-----x264
|--------|-----xvidcore
其中,zlib,jpeg,libpng,tiff都是对图片编码的解码,也就是读图片用到的库。而ffmpeg是视频解码的库,也就是说需要读取视频就必须编译这个库进opencv,它的依赖库是x264和xvidcore。
Xilinx-ZC702开发板的交叉编译工具是arm-xilinx-gnueabi- ,其下载地址是:
http://pan.baidu.com/s/1kU02yUj
xilinx-arm交叉编译工具:xilinx-cross_compile_2014-4.bin
ffmpeg源码包:ffmpeg-0.10.3.tar.bz2
jpeg源码包:jpegsrc.v8d.tar.gz
png源码包:libpng-1.5.14.tar.gz
tiff源码包:tiff-4.0.3.tar.gz
x264源码包:x264-snapshot-20120528-2245-stable.tar.bz2
xvid源码包:xvidcore-1.3.2.tar.gz
zlib源码包:zlib127.zip
OpenCV源码包是2.4.9.为什么要用249我是觉得反正都配置一回,就配置高一点版本的,毕竟2.x版本都差不多。
QT 还没有时间配置。。。。。
------------------------------------------------我是分割线-----------------------------------------------
1.安装交叉编译工具链toolchain。
这里指的交叉工具链实际上我觉得就是一个编译器,把PC端的程序编译成arm平台的可执行程序。
配置环境:Ubuntu x 32
一定要是32位的Linux 不然会有各种错误,我看网上还有一种说法,是执行命令:apt-get install ia32-libs ia32-libs-gtk。不过我想反正都是装虚拟机干嘛给自己找罪受,直接装个32位的不是更省事嘛。
然后是需要修改dash为bash,输入命令:
dpkg-reconfigure dash
在出现的对话框中,选择No就可以了。非常的简单。
1)解压zc702_cross_compile_2014-4.tar.gz
我们将要用到的交叉工具链也就是cross compile toolchain 是在 cross_compile_2014-4\lin\bin 目录下的。所以要把这个目录添加到Ubuntu的环境变量PATH中。为了能够所有的终端都可以用这个toolchain 所以就需要把它添加到系统文件中。具体的添加方法如下:
在终端中输入 >sudo gedit /etc/bash.bashrc 编辑bash.bashrc文件
在该文件中添加三行:
export ARCH=arm #指定交叉平台
export CROSS_COMPILE=arm-xilinx-linux-gnueabi- #指定交叉编译器
export PATH=/{zc702_cross_compile_2014-4.tar.gz的解压目录}/cross_compile_2014-4/lin/bin:$PATH # 将交叉编译器的bin目录添加到环境变量中
在终端中输入 >source /etc/bash.bashrc #使当前配置立即生效,执行这句就不用重启系统了。
这样设置以后,在终端输入 >arm-xilinx 然后在按tab 补齐就会出现 >arm-xilinx-linux-gnueabi- 这就说明你PATH的设置生效了。然后可以用这个交叉编译器即arm-xilinx-linux-gnueabi-gcc ,编译一个helloworld程序。
编译命令:arm-xilinx-linux-gnueabi-gcc hello.c -o hello.exe
然后用 > file hello.exe查看可执行程序的属性。会出现arm平台。
2)安装opencv的各种依赖库
(1)zlib-1.2.7
>unzip zlib127.zip
>cd zlib-1.2.7
>export CC=arm-xilinx-gnueabi-gcc
>./configure --prefix=$ZYNQ_CV_BUILD --shared
>make
>make install
然后,可以进入$ZYNQ_CV_BUILD/lib 目录下检查是否已经编译ARM环境的zlib库
cd $ZYNQ_CV_BUILD/lib
ls
file libz.so.1.2.7
会出现以下信息:(图片以后补上)显示已经生成了arm需要的动态链接.so
(2)jpeg-8d
>tar -zxvf jpegsrc.v8d.tar.gz
>cd jpeg-8d
>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --enable-shared
>make
>make install
图片后补上
(3)libpng-1.5.14
>tar -zxvf libpng-1.5.14.tar.gz
>cd libpng-1.5.14
>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --with-pkgconfigdir=$ZYNQ_CV_BUILD/lib/pkgconfig
LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_BUILD/include
>make
>make install
图片后补上
(4)x264-snapshot-20120528-2245-stable
>tar -jxvf x264-snapshot-20120528-2245-stable.tar.bz2
>cd x264-snapshot-20120528-2245-stable
>./configure --host=arm-linux --cross-prefix=arm-xilinx-linux-gnueabi --enable-shared --prefix=$ZYNQ_CV_BUILD
>make
>make install
图片后补上
(5)xvidcore-1.3.2
>tar -zxvf xvidcore-1.3.2.tar.gz
>cd xvidcore/build/generic //configure在这个目录下
>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --disable-assembly
>make
>make install
图片后补上
(6)tiff-4.0.3
>tar -zxvf tiff-4.0.3.tar.gz
>cd tiff-4.0.3
>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --enable-shared
LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_BUILD/include
>make
>make install
图片后补上
(7)ffmpeg-0.10.3
ffmpeg的配置选项比较多,需要添加cflags和ldflags的声明
>tar -jxvf ffmpeg-0.10.3.tar.bz2
>cd fmpeg-0.10.3
>./configure --prefix=$ZYNQ_CV_BUILD --enable-shared --disable-static --enable-gpl --enable-cross-complie --arch-arm \
--disable-stripping --target-os=linux --enable-linx264 --enable-libxvid --cc=arm-xilinx-linux-gnueabi-gcc --enable-swscale \
--extra-cflags=-I$ZYNQ_CV_BUILD/include --extra-ldflags=-L$ZYNQ_CV_BUILD/lib --disable-asm
>make
>make install
图片后补上
2.安装Opencv2.4.9过程
首先要先安装一些配置工具:
>sudo apt-get install cmake cmake-qt-gui pkg-configure
然后解压Opencv源代码:
>tar -jxvf opencv-2.4.9.tar.bz2
进入源代码文件夹,创建一个编译后存放的文件夹rebuild文件夹,用来存放重新编译后的opencv
>cd Opencv-2.4.3
>mkdir rebuild
>cd rebuild
>gedit toolchain.cmake
新建toolchain.cmake 文件,并添加如下内容:
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-xilinx-linux-gnueabi-gcc )
set( CMAKE_CXX_COMPILER arm-xilinx-linux-gnueabi-g++ )
set( CMAKE_FIND_ROOT_PATH "/opt/opencv/opencv-lib ") ##这个是就是$ZYNQ_CV_BUILD 的路径
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
注:安装完pkg-configure 以后需要配置pkg的搜索路径,因为opencv在2.x 版本以后 都是依赖PKG来找依赖库的,如果不加这句的话会出现 *opencv不支持ffmpeg,也就是读取不了视频*
> export PKG_CONFIG_PATH=/opt/opencv-lib/pkgconfig
配置完pkg以后,现在可以用cmake-gui来编译opencv源码了。
>cmake-gui
然后设置opencv源码路径,编译后存放的文件夹rebuild,把with_tiff, with_jpeg , with_png , with_ffmpeg ,编译器选择交叉编译文件toolchain.txt。然后点击configure, generator生成CMAKECACHE.txt文件。
然后关掉cmake-gui,再以记事本的形式打开CMAKECACHE.txt.
>gedit CMAKECACHE.txt
搜索LINK关键字,在“=”后面添加 : -lz -lx264 -ljpeg -lpng -ltiff -lpng15 -lxvidcore -lavcodec 。。。。 就是缺什么填什么。
然后再关闭 CMAKECACHE.txt文件,执行make 开始编译opencv。
>make
>make install
这样opencv-arm版本的链接库就编译好了。可以编译小的程序来试试看了。
把编译完的opencv 放到开发板的一个存储区,因为arm版的linux系统系统磁盘很小,所以只能把编译后的库放在其他的外挂存储器中,然后在/usr/lib下创建软链接就可以了
暂时就这样了 下次配置再补全图吧。。。