使用教程

本小节描述在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所示:

PNG

图 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窗口。