使用教程
本小节描述在MYD-AM335x上使用Qt进行GUI程序开发的方法和步骤,包括两大部分,第一部分讲述光盘中提供的Qt SDK的使用方法,一般的Qt程序开发使用光盘中提供的Qt SDK即可;第二部分讲述如何从Qt源码中编译生成Qt 开发环境,当光盘中提供的Qt库不能满足Qt开发程序需求时才需要自己制定Qt开发环境。
使用光盘提供的Qt SDK
- 解压编译好的tslib到PC:
$ sudo tar xvjf /media/cdrom/05-Linux_Source/Qt_Arm/ tslib-prebuild.tar.bz2 -C /opt
- 解压Qt SDK到PC:
$ sudo tar xvjf /media/cdrom/05-Linux_Source/Qt_Arm/qt-4.8.5-sdk.tar.bz2 -C /opt
- 配置环境变量和交叉编译Qt应用程序
配置环境变量和交叉编译Qt应用程序请参考:1.10.4 交叉编译Qt应用程序。
交叉编译Qt开发环境
参考【1.4.2】安装交叉编译工具,设置环境变量。
安装automake、libtool、autoconf包,编译安装tslib:
$ sudo apt-get install automake libtool autoconf
$ cd <WORKDIR>
$ cp /media/cdrom/05-Linux_Souce/Qt_Arm/tslib-1.4.tar.bz2 ./
$ tar –jxf tslib-1.4.tar.bz2
$ cd tslib
$ ./ts-build
$ make install
注意:若执行ts-build出错时,编辑ts-build修改其中的交叉编译工具路径。
编译完成后,tslib将被安装到/usr/local/tslib目录,此时需要将此目录下tslib/etc/ts.conf文件第二行“#module_raw input”的注释去掉,变为“module_raw input”,注意一定要顶格,如图1-7所示:
图 1-7
- 编译qt
拷贝Qt源码到工作目录:
$ cd <WORKDIR>
$ cp /media/cdrom/05-Linux_Source/Qt_Arm/\
qt-everywhere-opensource-src-4.8.5.tar.bz2\ ./
安装必要的工具包:
# sudo apt-get install xorg-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
开始编译:
$ tar –jxf qt-everywhere-opensource-src-4.8.5.tar.bz2
$ cd qt-everywhere-opensource-src-4.8.5
$ ./qt-build
$ sudo make install
编译完成后,qt-4.8.5将被安装到/opt/qt-4.8.5目录。
移植Qt到开发板
- 把安装到/usr/local中的tslib目录下的文件拷贝到用于编译开发板文件系统的myd-am335x_rootfs文件夹的usr/local/目录下:
$ cp –r /usr/local/tslib/bin \
<WORKDIR>/myd-am335x_rootfs/usr/local/tslib
$ cp -r /usr/local/tslib/etc \
<WORKDIR>/myd-am335x_rootfs/usr/local/tslib
$ cp -r /usr/local/tslib/lib \
<WORKDIR>/myd-am335x_rootfs/usr/local/tslib
- 把安装到/opt中的qt-4.8.5目录文件拷贝到用于编译开发板文件系统的myd-am335x_rootfs文件夹的opt/目录下:
#cp -r /opt/qt-4.8.5 <WORKDIR>/myd-am335x_rootfs/opt/
- 进入开发板上的/etc/init.d,编写脚本qt.sh,如下:
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/tslib/lib:/opt/qt-4.8.5/lib
export QT_QWS_FONTDIR=/opt/qt-4.8.5/lib/fonts
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin
if grep "hdmi" /proc/cmdline > /dev/null ; then
export QWS_MOUSE_PROTO="Tslib:/dev/input/event1 MouseMan:/dev/input/mice"
else
export QWS_MOUSE_PROTO="Tslib:/dev/input/event1"
fi
export QWS_DISPLAY=:1
修改开发板上/etc/init.d/目录下的rc文件,在该文件最后加上:
if [ -e /etc/init.d/qt.sh ];then
/etc/init.d/qt.sh
fi
- 参照【1.4.5】重新编译文件系统,生成包含QT库和tslib的ubi.img文件
交叉编译Qt应用程序
- 配置PC机的Qt编译环境:
$ export QT_PREFIX=/opt/qt-4.8.5
$ export PATH=${QT_PREFIX}/bin:$PATH
$ export QMAKESPEC=${QT_PREFIX}/mkspecs/qws/linux-arm-g++
- 创建代码:
$ mkdir hellomyir $ cd hellomyir $ gedit hellomyir.cpp
输入如下代码:
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv)
{
QApplication app(argc,argv);
QLabel label("Make Your idea Real!");
label.show();
return app.exec();
}
- 编译:
$ qmake -project
$ qmake
$ make
- 将生成的hellomyir拷贝到开发板,并在开发板上执行:
# ./hellomyir
将编译生成的可执行文件拷贝到开发板中运行,将会在LCD屏幕上看到“Make Your idea Real!”的Qt窗口。