基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

最近刚刚接触XILINX的ZYNQ板,刚接触没有十天。XILINX定位它为SOC,我也很认同,起码比TI定位MPU为SOC强很多。据说今年TI的最新产品也加入了ZYNQ板。

之前的MIPS处理器设计与实现的项目就算做告一段落,搞了将近7个月,成果显著,收获颇多,最近打算搞搞ZYNQ。 

之前MIPS也有一套交叉编译工具,不过是老师提供的,自己也尝试搞了搞,太辛苦了,而且也没什么成果,因为我们需要LITE版的MIPS指令集。

这次不一样,ZYNQ集成了两个ARM cortex-A9处理器,可以支持thumb指令集以及arm指令集,所以这方面的交叉编译我本以为会很容易,谁知道依旧搞了很久。 

推荐阅读:

主机平台:Ubuntu12.04LTS x86-32bit(我装的是双系统,没有在虚拟机下运行,真心不推荐在虚拟机下运行,太慢了)

目标平台:linaro(Ubuntu11.04貌似) ARM(Xilinx Zedboard)

由于OpenCV默认下只支持AVI标准格式的打开与写入,因此需要添加很多解码与编码库的交叉编译库等文件,包括jpeg、png等等。因此,大体流程是先对需要支持的库进行交叉编译,再对OpenCV进行交叉编译并添加相应的库支持。依赖关系如下:

OpenCV
|--------zlib
|--------jpeg
|--------libpng
|--------zlib
|--------tiff
|--------zlib
|--------ffmpeg
|--------x264
|--------xvidcore
其实,看起来并不难, 但最难的就是这些源码包之间的相互支持等错综复杂的关系,基本上就是错一个动全身,笔者经过了几番的尝试,终于找到了一个在当前环境下可以成功的源码包,其版本如下:
xilinx-arm交叉编译工具:xilinx-2011.09-50-arm-xilinx-linux-gnueabi.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源码包:OpenCV-2.4.3.tar.bz2(笔者选用的2.4.3,但是里面有个bug在Windows下用mingw32-make编译可能会报错,对于这个bug官方给的建议是升级2.4.4,选用2.4.4应该也可以,可以尝试一下,这个没bug)
Qt第三方库:qt-everywhere-opensource-src-4.8.5.tar.gz(笔者没有选用最新的5.1版本,据说这个版本增加了很多功能比如传感器等等,有兴趣可尝试)
由于其是这些库中有些很难找,笔者直接传到百度网盘,供下载  http://pan.baidu.com/share/link?shareid=2450342524&uk=487907638
 
需要注意的是版本一定要正确并且一定要按照以下的顺序安装,否则会出现各种错误。
 
-------------------------------------------------------------------------------------------------------------------
 
1.安装xilinx-arm交叉编译工具
xilinx-arm交叉编译工具即SourceryCodeBench,该工具是专门为32位机器设计的,所以64位机器需要下载32-bit库
sudo -s进入root权限(一定要小心,不要乱删除文件,退出exit即可)
apt-get install ia32-libs ia32-libs-gtk
 
 
然后需要将dash更改为bash,输入
基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结
dpkg-reconfigure dash
出现如图所示对话框,选择No,将dash修改为bash。
基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结
 
下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,默认保存在Downloads文件夹下,保存位置任意。
输入如下命令打开文件
cd Downloads // 打开Downloads文件夹,根据保存文件不同,此类指令任意改变,以下略去
./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin // 打开bin文件,由于此时为root权限,所以可以打开任意文件否则需要使用
// chmod命令为文件分配权限
然后弹出如下安装界面,一路accept和next,选择Typical安装以及Do not modify,安装在默认路径(/root/CodeSourcery下)

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

安装完成后,需要导入环境变量,也可以修改bash文件(不需要每次都导入环境变量),指令如下:

export ARCH=arm

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH

注意:$PATH 千万不要输入错误,否则会运行不了很多命令,也可以输入

gedit /etc/bash.bashrc

如图所示,添加以下内容

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

保存并关闭gedit,然后输入

source /etc/bash.bashrc使当前设置立即生效,

可以通过输入echo $PATH命令检查环境变量是否设置正确,如下图:

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

 

可以,编译C文件进行测试,

使用gedit在任意目录下编辑hello.c文件如图所示,保存后进入终端。

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

以root身份进入到当前目录下,输入arm-xilinx-linux-gnueabi-gcc -o hello hello.c命令(该命令root身份有效)

生成hello可执行文件,输入file hello命令,hello文件信息如下,显示arm可执行文件。

 

此时证明arm-xilinx交叉编译工具安装正确无误,进入下一步。

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

在此之前建议,添加环境变量用于简单表示交叉编译库存放路径,每次启动终端都需要输入此命令

export ZYNQ_CV_BUILD=/opt/opencv/opencv-lib

使用echo $ZYNQ_CV_BUILD命令检验是否添加环境变量,再开始对依赖库的编译。

相关推荐