建立QT交叉编译环境

我们已经在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


你可能感兴趣的:(QT交叉编译)