jerrywu75的笔记 https://passport2.21ic.com/?62511 [收藏] [复制] [RSS]

日志

嵌入式linux新手入门手记-第一次在am335x上运行qt应用程序

已有 1906 次阅读2015-8-2 11:43 |个人分类:嵌入式开发|系统分类:嵌入式系统| 应用程序, linux, 嵌入式, 手记

    上一篇手记,我已经将qt5.4.1通过交叉编译生成了am335x平台需要的qt5.4.1开发环境和共享库,这些工具和文件安装到/home/XXXX/qt541arm目录下,同时将相关的qt541arm下的lib,plugins目录以及文件拷贝到am335x的nfs文件系统中的/opt/qt541arm目录下。并且已经编写好一个“hello world”的qtdemo程序。
    这里我将这个qtdemo源程序使用qt541arm中的qmake工具进行交叉编译,生成am335x平台的qtdemo可执行文件。
    这里我们有2种方法:
    1、一种是将qtdemo的源程序拷贝到一个新的目录中,然后执行:
            /home/XXXX/qt541arm/bin/qmake -project
            /home/XXXX/qt541arm/bin/qmake
            make
    2, 使用QtCreator,这种方式需要启动QtCreator,然后在菜单tools下的选项中添加交叉编译的工具,环境。然后在qtdemo工程中增加一个编译项,将这个编译选项设置成使用交叉编译,同样能够编译出arm平台的qtdemo可执行文件。
   因为后续的qt应用程序开发时,需要使用QtCreator来设计用户界面,所以这里我选择使用第二种方法。
   将交叉编译好的qtdemo执行文件拷贝到am335x的nfs文件系统下的/usr目录。在移植tslib时,我们编辑过nfs文件系统下的/etc/profile,这里我们继续编辑这个文件,加入qt应用程序运行需要的环境变量:

        export QT_ROOT=/opt/qt541arm

        export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins/platforms

        export QT_QPA_PLATFORM=linuxfb:fb=$TSLIB_FBDEVICE

        export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts

        export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE

        export QT_QPA_FB_HIDECURSOR=1

        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/lib

     重新启动am335x,然后检查环境变量是否设置正确,运行ts_print,检查触摸屏以及tslib是否工作正确。

     进入到/usr目录,运行qtdemo程序。到这里如果前面的工作没有错误,qtdemo将运行,并在显示器上显示一个没有标题的窗口,窗口中显示一行文字“hello world”,以及一个按键。

    但是到这里,还有2个问题:

    1、触摸屏没有反应,点击按键不会有相应的正确动作;

    2、不能显示中文。

    问题1需要花较多的时间,我将在后续的几篇手记中详细记录。而2的问题比较容易解决,在网上找一个免费的中文字库,我使用的是文泉驿的免费中文字库truetype文件,将这个文件拷贝到上述qt环境变量的font指定的目录中,然后再qtdemo中设置使用这个字库文件。

  另外还有一种比较简单的方法,就是将qt的font目录下的所有文件全部删除,然后将中文字库文件拷贝过去,不需要修改qtdemo程序,直接运行就可以显示中文。这种方式对于没有其他字库,需要减少ubi文件系统体积的时候比较有用。


(原创文章,转载请注明出处)

(未经本人同意,不得用于商业用途)



路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)