zedboard的QT移植与测试
0赞ubuntu建议在root权限下进行一下操作。
1、从QT官网下载QT(包含QTCreator)
http://www.qt.io/download-open-source/#section-2
下载下来的是.run文件,可以直接在ubuntu中双击打开界面安装到一个目录下即可。
2、下载QT源码
http://download.qt.io/archive/qt/
3、交叉编译QT源码
新建两个文件夹(自己随便建立的目录) /home/esion/zed/qt/build /home/esion/zed/qt/install ,然后输入
gedit /etc/bash.bashrc在该文件中设置如下几个环境变量,方便操作:
export ZYNQ_QT_BUILD=/home/esion/zed/qt/build
export ZYNQ_QT_INSTALL=/home/esion/zed/qt/install
export PATH=$ZYNQ_QT_INSTALL/bin:$PATH
保存退出,然后输入:
source /etc/bash.bashrc即可立即生效环境变量。
接下来将源码包复制到build文件夹下面,并且解压。然后将我上传的附件中的qmake.conf配置文件复制到qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-gnueabi-g++目录下,这个文件用来告知QMake应该用哪个编译器来编译QT工程。
然后回到qt-everywhere-opensource-src-4.8.1这个目录,该目录下有个configure文件,接下来就是对QT进行配置,配置文件如下:
./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
配置完成后进行编译:
make这一步骤花的时间比较久(半个小时左右),编译好了就可以进行安装:
make install至此,在qt-everywhere-opensource-src-4.8.1/install文件夹下面,就是安装的文件了。
4、制作QT库的镜像文件
在制作镜像之前,先拷贝一些库到qt交叉编译库里:
cp /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* $ZYNQ_QT_INSTALL/lib
然后在一个指定目录下制作一个100M的镜像文件,如下:
cd $ZYNQ_QT_BUILDdd if=/dev/zero of=qt_lib.img bs=1M count=100
mkfs.ext4 -F qt_lib.img
chmod go+w qt_lib.img
mount qt_lib.img -o loop /mnt
cp -rf $ZYNQ_QT_INSTALL/* /mnt
chmod go-w qt_lib.img
umount /mnt
此时在该操作目录下面的文件qt_lib.img就是qt的库文件。
至此qt移植成功了。
4、测试
新建一个QTCreator工程,然后在终端下进入到该工程目录下,输入如下命令:
qmake –project qmake make
即可生成zedboard板上的可执行文件,其中qmake -project是生成新的QT的.pro工程文件,qmake是生成Makefile文件,make则是执行Makefile生成可执行文件。
接下来将qt_lib.img文件和可执行文件helloworld(helloworld在附件中)一起拷贝到SD卡中,然后zedboard上电,在zedboard上面建立和ubuntu上一样的/home/esion/zed/qt/install目录(目录要使用mkdir一级一级往下建),然后挂载SD卡
mount /dev/mmcblk0p1 /mnt/
然后挂载SD卡中的qt_lib.img镜像文件到上述目录中,如下:
mount /mnt/qt_lib.img /home/esion/zed/qt/install接下来进入/mnt目录,然后输入
./helloworld -qws(zedboard接好鼠标和HDMI显示屏)使用鼠标点击屏幕出现的按钮,即可,如下:
附件:(包含qmake.conf和helloworld)
