我们已经在Ubuntu上安装了PC版的QT,安装命令如下
sudo apt-get install qt4-*
现在我们需要安装qt在arm上运行的交叉编译环境。
1.从qt官方网站下载QT源码,
我们需要下载的是qt-embedded-linux-opensource-src-4.5.3.tar.gz
2.解压并改名
1 2 3 | tar zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-arm cd qt-embedded-linux-opensource-src-4.5.3-arm/ |
3.编译前的一些修改
打开qt-embedded-linux-opensourcesrc4.5.2-arm/src/gui/embedded/qmouselinuxtp_qws.h 加入
1 2 | #define QT_QWS_IPAQ #define QT_QWS_IPAQ_RAW //支持触摸屏 |
4.配置
configure配置详解
1 2 3 | ./configure -embedded arm -little-endian -qt-sql-mysql -plugin-sql-mysql -no-scripttools -no-nis -no-largefile -no-libmng -no-accessibility -depths 16 -nomake docs -nomake demos -nomake examples -qt-zlib -feature-THREAD -feature-CONCURRENT -feature-EFFECTS -no-feature-CURSOR -silent |
-embedded arm 启用arm交叉编译配置
-little-endian 低位在前
-qt-sql-mysql 添加mysql支持,如使用sqlite 可将mysql改成sqlite
-plugin-sql-mysql 启动msyql插件,同上
-no-scripttools 不编译QT脚本工具模式
-no-nis 不编译网络信息服务支持
-no-largefile 不加入大文件支持
-no-libmng 不加入MNG图形格式支持
-no-accessibility 不加入图形加速器的支持
-depths 16 色深 16位 ,可以从 1, 4, 8, 12, 15, 16, 18, 24, 32, all中选择
-nomake docs 不编译文档
-nomake demos 不编译demos
-nomake examples 不编译例程
-qt-zlib 启用zlib支持
-feature- 选择qt的特性,具体见src/corelib/global/qfeatures.txt
-feature-THREAD 启用多线程特性
-feature-CONCURRENT 启用并发特性,提供高性能的多线程api
-feature-EFFECTS 启用特殊的插件外观效果
-no-feature-CURSOR 不启用鼠标支持
-feature-SOUND 支持播放音频文件
-silent 使用安静编译模式
实际运用中,因为mysql编译发生错误,暂时去掉对mysql的支持,且加上对tslib的支持,编译参数如下:
./configure -embedded arm -little-endian -no-sql-mysql -qt-sql-sqlite -plugin-sql-sqlite -qt-mouse-tslib -plugin-mouse-tslib -no-scripttools -no-nis -no-largefile -no-libmng -no-accessibility -depths 16 -nomake docs -nomake demos -nomake examples -qt-zlib -feature-THREAD -feature-CONCURRENT -feature-EFFECTS -no-feature-CURSOR -silent -no-qt3support
5.编译
make
make install
之后在/usr/local/Trolltech/QtEmbedded-4.5.3-arm/目录下可找到我们所需要的qt for arm 编译执行环境。
让QT在板子上跑起来需要做的工作(未实际操作验证):
1. 吧编译完的lib库拷贝到文件系统中
1 2 3 4 5 6 | mkdir /usr/local/qt; mkdir /usr/local/qtopia mkdir qt/lib -p #存放QT库文件 mkdir qtopia/bin #存放编译出来的QT应用程序cp -af QtEmbedded-4.5.3-arm/lib/* /usr/local/qt/lib/ cp -af QtEmbedded-4.5.3-arm/examples/mainwindows/menus/menus /usr/local/qtopia/bin |
还需要一个脚本来设置环境(该脚本结构一致,内容没有通用性,得根据屏和tslib的一致来设置):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/sh export TSLIB_ROOT=/usr/local/tslibexport TSLIB_TSDEVICE=/dev/ts export set TSLIB_TSDEVICE=/dev/ts export set TSLIB_CONFILE=/usr/local/tslib/etc/ts.conf export set TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts export set TSLIB_CALIBFILE=/etc/pointercal export TSLIB_TSEVENTTYPE=H3600i export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_CONSOLEDEVICE=none export set HOME=/root expoet set QTDIR=/usr/loca/qt export set QPEDIR=/usr/local/qtopia export set KDEDIR=/usr/local/qt export set QWS_DISPLAY="LinuxFB:/dev/fb0" export set QWS_DISPLAY="LinuxFb:mmWidth50:mmHeight65:0" export set QWS_KEYBOARD="TTY:/dev/tty1" export set QWS_MOUSE_PROTO=Tslib:/dev/ts export set QT_PLUGIN_PATH=$QTDIR/plugins/ export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/ export set PATH=$QPEDIR/bin:$PATH export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformat:$LD_LIBRARY_PATH |
使用Qt Creator来设计程序界面
Qt Creator是QT的跨平台IDE,可以直接用来设计板子上的Qt界面
首先需要在Qt Creator里加入qt for arm版本
在菜单tools->options里的 QT4->Qt Versions里添加一个版本,赋予qmake路径为 /usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin即可。之后可以先设计基面,用qt for pc编译测试完毕后更换版本为qt for arm重新编译。
今天在板子上用网络挂载的方式试运行了一下QT程序,效果还不错,步骤如下:
1.将QT库文件所在路径加入LD_LIBRARY_PATH中
2.配置下QT字体和插件路径QT_PLUGIN_PATH QT_QWS_FONTDIR
3.TS路径配置用迷你贵的配置就可以了
4.运行程序 xxx -qws