Zedboard移植QT

来源:互联网 发布:263网络通信 编辑:程序博客网 时间:2024/06/05 16:01

参照《嵌入式系统软硬件协同设计实战指南》这本书第十四章 系统级设计案例的14.2.7节 在ZedBoard上运行QT程序


一、关于QT在PC Ubuntu上的安装与使用

一个简单的例子可以参照 懒兔子 ZedBoard学习手记(八) 更大的目标!在Linux下开发图形用户界面,建立一个简单的工程,编译后生成的可执行文件效果如下图:

这里写图片描述

工程文件夹下的源文件如下:

这里写图片描述

作为Zedboard移植的测试工程


二、Zedboard移植QT

最好的参考是官方文档,本文仅仅进行一些补充说明。

在进行QT移植配置之前,要确保交叉编译环境已经配置好;获取su权限;

1. 配置环境变量:

/etc/bash.bashrc文件进行修改,添加qt编译的环境变量:

export ZYNQ_QT_BUILD=/home/linux/Zynq_qt_buildexport ZYNQ_QT_INSTALL=/home/linux/Zynq_qt_build/installexport PATH=$ZYNQ_QT_INSTALL/bin:$PATH

其中/home/linux/Zynq_qt_build/install为QT的安装目录。
注意:为了移植的方便,此处的安装目录尽量简单

2. 相关文件准备:

下载Xilinx提供的Qt Lib源码包和相关的配置文件版本为4.7,下载地址将qt_build_src.tar放在/home/linux/Zynq_qt_build目录下,进行解压:

cp /path/to/download/qt_build_src.tar /home/linux/Zynq_qt_build/qt_build_src.tartar xvf qt_build_src.tar

解压后可以得到几个文件,其中qt-everywhere-opensource-src-4.7.3.tar.gzqmake.conf是Zedboard移植QT配置时所需要的文件;

解压qt-everywhere-opensource-src-4.7.3.tar.gz

cd $ZYNQ_QT_BUILDtar xzfv qt-everywhere-opensource-src-4.7.3.tar.gzcd qt-everywhere-opensource-src-4.7.3.tar.gz

3. 工具链配置

需要配置文件对qmake依赖的工具链进行指定,为生成Makefile做准备,使用官网提供的qmake_4.7.3.conf文件即可,把它复制到mkspecs/qws/linux-arm-gnueabi-g++/文件夹下:

cp /path/to/downloaded/qmake_4.7.3.conf mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf

4. Makefile文件配置

配置QT生成Makefile文件,使用配置文件和指定的工具链:

./configure \-embedded arm \-xplatform qws/linux-arm-gnueabi-g++ \-little-endian \-opensource \-host-little-endian \-confirm-license \-nomake demos \-nomake examples \-prefix $ZYNQ_QT_INSTALL

官方文档对于一些参数进行的解释:

-xplatform <mkspec files to use>        指定环境的目标平台进行交叉编译使用的mkspec文件-embedded <target CPU architecture>     目标平台的CPU架构-prefix <path>                          交叉编译QT的安装路径-confirm-license                        在配置过程中,可以节省同意许可协议的懒惰选项(本句直译)

5. 生成和安装:

makemake install

6. 制作镜像文件

制作Zedboard可挂载的QT运行库镜像;

将Xilinx交叉编译器中的基础C++库复制到QT的安装目录下:

cp -P /path/to/cross/compiler/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* $ZYNQ_QT_INSTALL/lib

制作qt_lib.img镜像:

cd $ZYNQ_QT_BUILDdd if=/dev/zero of=qt_lib.img bs=1M count=80mkfs.ext2 -F qt_lib.imgchmod go+w qt_lib.imgmount qt_lib.img -o loop /mntcp -rf $ZYNQ_QT_INSTALL/* /mntchmod go-w qt_lib.imgumount /mnt

至此,qt_lib.img镜像已经生成了

7. Zedboard移植QT工程交叉编译

将之前QT的测试工程文件夹helloworld**复制**一份,据说交叉编译以后原来的工程就无法在PC上打开了。在工程所在的文件夹下,进行交叉编译:

qmake -projectqmakemake

成功编译后会生成与文件夹同名的可执行文件helloworld,交叉编译后的工程文件夹内容如下:

这里写图片描述

8. Zedboard移植QT测试

将可执行文件helloworld,QT运行库镜像qt_lib.img拷贝到SD卡中,运行Zedboard开发板,挂载qt_lib.img镜像。

注意:镜像的挂载目录应该与PC机上QT的安装目录一致。本文中,PC机上QT的安装目录为/home/linux/Zynq_qt_build/install,在Zedboard板系统上建立相同路径的目录作为挂载目录:

mount /dev/sda1 /mntmount /mnt/qt_lib.img /home/linux/Zynq_qt_build/install

这样一来,就可以运行QT程序了。-qws指令用于建立一个运行QT软件必须的QWS Server,这是由QT的机制决定,软件会从挂载目录自动调用QT运行库,运行命令如下:

/mnt/helloworld -qws

运行效果如下图:

这里写图片描述

通过HDMI连接显示器后,显示效果如图:

这里写图片描述

可通过USB Hub连接鼠标进行操作,窗口关闭则QT程序结束运行。

0 0
原创粉丝点击