解析QT 4.5 编译

移动开发
Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程,简单的说,QT就是用来编写C++程序的。QT4.4.0就是QT4的一个版本。

首先要有配置好的环境,本文使用的编译环境如下:

主机系统:Ubuntu 8.10

主机编译器:gcc 版本 4.3.2

交叉编译器:arm-softfloat-linux-gnu-gcc

软件资源:

  1. qt-embedded-linux-opensource-src-4.5.1.tar.gz  
  2. qt-x11-opensource-src-4.5.1.tar.gz 

因为一般嵌入式设备上都是在framebuffer的方式,在X11上就是用qvfb 来模拟framebuffer的,我们平时开发也都是在PC上完成的,所以我们需要先安装X11版的Qt来获取qvfb这个工具。嵌入式的开发有了 qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。

一、下载

  1. qt-embedded-linux-opensource-src-4.5.1.tar.gz  
  2. qt-x11-opensource-src-4.5.1.tar.gz 

二、编译安装qt-embedded

  1. # tar -zxvf qt-embedded-linux-opensource-src-4.5.1.tar.gz  
  2.     # cd qt-embedded-linux-opensource-src-4.5.1  
  3.     # ./configure -embedded x86 -qvfb  
  4.     # make  
  5.     # make install 

qt-embedded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.1

设置环境变量:

  1. # vi ~/.bashrc 

把下面的加上去

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1  
  2.     export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/bin:$PATH  
  3.     export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/lib:$LD_LIBRARY_PATH 

至此,qt-embedded安装完毕

三、编译安装qt-x11

  1. # tar -zxvf qt-x11-opensource-src-4.5.1.tar.gz  
  2. # cd qt-x11-opensource-src-4.5.1  
  3. # ./configure  
  4. # make  
  5. # make install 

qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.1

编译qvfb:

  1. # cd qt-x11-opensource-src-4.5.1/tools/qvfb  
  2.     # make  
  3. /*****Added by PengCarl (12 December 2009)*****/ 

出现错误:/usr/bin/ld: cannot find -lXtst
解决:ubuntu没装有libxtst-dev,解决如下

  1. # aptitude install libxtst-dev 

把生成的qvfb复制到qt-embedded的bin下,如

  1. # cp qt-x11-opensource-src-4.5.1/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.1/bin 

至此,qt-x11安装完毕完毕

四、测试

  1. # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/  
  2. # qvfb &  
  3. # ./chip -qws 

随即我们就可以看到qt自带的例程图像了。

五、编译qt自带的例程

  1. # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/  
  2. # qmake chip.pro  (生成Makefile文件)  
  3. # make 

5、编译安装tslib1.4

1.首先下载tslib-1.4.tar.gz,下载地址:http://blog.chinaunix.net/u2/75270/showart_1793535.html里面自己找

2.解压文件后

记得现安装三个东西

  1. #sudo apt-get install autoconf  
  2. #sudo apt-get install automake  
  3. #sudo apt-get install libtool 

确认已经安装并设置好arm-linux-gcc

然后进行编译

  1. #cd tslib/  
  2. #export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc  
  3. #export CXX=/usr/local/arm/3.4.1/bin/arm-linux-g++ 

运行

  1. #./autogen.sh  
  2. #echo "ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache 

#p#

配置安装参数

 

  1. #./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no   
  2. PLUGIN_DIR=/usr/local/arm/tslib/plugins -prefix=/usr/local/arm/tslib/build   
  3. -host=arm-linux --cache-file=arm-linux.cache 2>&1 | tee conf_log 

编译

 

  1. #make 2>&1 | tee make_log  
  2. #make install 

编译后会出现bulid文件夹

  1. #cd build/etc  
  2. #gedit ts.conf 

去掉module_raw input前面的#号和空格移植到开发板

把build 文件夹拷贝到开发板相应的地方。我的就是拷贝到/home/tslib下

环境变量

 

  1. #!/bin/sh  
  2. export set T_ROOT=/home/tslib/build  
  3. export set LD_LIBRARY_PATH=$T_ROOT/lib  
  4. export set TSLIB_CONSOLEDEVICE=none 
  5. export set TSLIB_FBDEVICE=/dev/fb0  
  6. #export set TSLIB_TSDEVICE=/dev/event0  
  7. export TSLIB_TSDEVICE=/dev/h3600_tsraw  
  8. export set TSLIB_PLUGINDIR=$T_ROOT/lib/ts  
  9. export set TSLIB_CONFFILE=$T_ROOT/etc/ts.conf  
  10. export set TSLIB_CALIBFILE=/home/tslib/build/etc/pointercal  
  11. cd /home/tslib/build/bin  
  12. ./ts_calibrate 

在终端用env查看环境变量如下:

 

  1. [root@utu-Linux]\$ env  
  2. TSLIB_TSDEVICE=/dev/event0  
  3. USER=root 
  4. LD_LIBRARY_PATH=/home/tslib/build/lib  
  5. OLDPWD=/home/tslib/build  
  6. HOME=/  
  7. TSLIB_FBDEVICE=/dev/fb0  
  8. PS1=[root@utu-Linux]\$  
  9. TSLIB_PLUGINDIR=/home/tslib/build/lib/ts  
  10. T_ROOT=/home/tslib/build  
  11. TSLIB_CONSOLEDEVICE=none 
  12. LOGNAME=root 
  13. TERM=vt102 
  14. PATH=/sbin:/usr/sbin:/bin:/usr/bin  
  15. TSLIB_CONFFILE=/home/tslib/build/etc/ts.conf  
  16. SHELL=/bin/sh  
  17. PWD=/home/tslib/build/bin  
  18. TSLIB_CALIBFILE=/home/tslib/build/etc/pointercal  
  19. [root@utu-Linux]\$ 

进入 /home/tslib/build/bin目录下, ./ts_calibrate 就行了! 

6、编译安装QtEmbedded-4.5.2-arm版本

A、解压

 

  1. root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2  
  2. root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm  
  3. root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm 

B、配置编译:

  1. ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm \   
  2. -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif \   
  3. -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \  
  4.  -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \  
  5.  -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib 

注意这个目录要跟你的tslib安装目录相同!!!

  1. To reconfigure, run 'make confclean' and 'configure'.  
  2. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make 

  
 

C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目录下:

 

  1. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install  
  2. ...  
  3. To reconfigure, run 'make confclean' and 'configure'. 

#p#

移植Qt Embedded-4.5.2 tslib1.4 到 S3C2440

开发环境

操作系统:  Vmware6.0 + Ubuntu 8.04。

交叉编译器:arm-linux-gcc-4.3.2

目标板:     mini2440 + NEC3.5寸屏

1、下载源码包:

在:http://www.cnblogs.com/kenter/admin/ftp://ftp.qtsoftware.com/qt/source/ 下载

  1. qt-embedded-linux-opensource-src-4.5.2.tar.bz2  
  2. qt-x11-opensource-src-4.5.2.tar.bz2 

在http://blog.chinaunix.net/u2/86708/showart_1924834.html上 下载tslib1.4.tar.gz

2、配置ubuntu 8.04编译环境

安装g++:  sudo  apt-get g++

安装编译X11用到的库:sudo apt-get libx11-dev libxext-dev

安装libxtst-dev: sudo aptitude install libxtst-dev 否则编译qvfb出错。

3、编译及安装qt-x11-opensource-src-4.5.2

qt-x11版本可以产生Qt开发工具,如designer、qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。

  1. tar xjvf qt-x11-opensource-src-4.5.2.tar.bz2  
  2. cd qt-x11-opensource-src-4.5.2  
  3. ./configure  
  4. make  
  5. make install 

历经漫长的编译过程,默认安装在/usr/local/Trolltech/Qt-4.5.2下,编译完成后源程序不要删除,还有用。

4、编译配置QtEmbedded-4.5.2-x86版本

A、解压

  1. root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2  
  2. root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86  
  3. root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-x86 

B、配置编译:

 

  1. ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 -qvfb  
  2. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make 

C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-x86目录下:

  1. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make install 

D、建立脚本文件:setenv_arm.sh,输入以下内容:

  1. export QTEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-x86/  
  2. export PATH="/usr/local/Trolltech/QtEmbedded-4".5.2-x86/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib/:$LD_LIBRARY_PATH 

E、编译x86版QT应用程序前,先执行此脚本文件:

 

  1. root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-x86# source setenv-x86.sh 

5、编译安装tslib1.4

A、安装编译过程需用到的程序

  1. root@hrixin-desktop:/home/hrixin# apt-get install autoconf(或autoconf2.13)  
  2. root@hrixin-desktop:/home/hrixin# apt-get install automake  
  3. root@hrixin-desktop:/home/hrixin# apt-get install libtool 

B、配置编译

 

  1. root@hrixin-desktop:/work/qt# tar xzvf tslib-1.4.tar.gz  
  2. root@hrixin-desktop:/work/qt# cd tslib生成./configure  
  3. root@hrixin-desktop:/work/qt/tslib# source autogen.sh  
  4. root@hrixin-desktop:/work/qt/tslib# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 
  5. root@hrixin-desktop:/work/qt/tslib# make  

C、安装

  1. root@hrixin-desktop:/work/qt/tslib# make install-strip //生成瘦身应用程序和库 

打包

  1. root@hrixin-desktop:/usr/local# tar czvf tslib.tar.gz tslib 

D、复制到NFS文件系统/usr/local目录下解压

  1. root@hrixin-desktop:/work/root_qtopia/usr/local# tar xzvf tslib.tar.gz

E、设置环境变量,校准触摸屏。在天开板终端建立脚本文件,并执行:

  1. export TSLIB_ROOT=/usr/local/tslib  
  2. export TSLIB_TSDEVICE=/dev/input/event0  
  3. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
  4. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
  5. export TSLIB_CALIBFILE=/etc/pointercal  
  6. export TSLIB_FBDEVICE=/dev/fb0  
  7. export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 

注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.

你可以测试有没有加载触摸屏驱动,cat /dev/input/event0(这只是我的板子上的触摸屏) ,

点击触摸屏,看终端有无显示,若有则表明正确。

在开发板/usr/local/tslib/bin目录下执行校准触摸屏程序:

  1. [root@FriendlyARM bin]# ./ts_calibrate 

可以运行此目录下的其他程序进行测试。      

至此,触摸屏程序能顺利运行,接下来移植QtEmbedded-4.5.2,设置好环境变量。

6、编译安装QtEmbedded-4.5.2-arm版本

A、解压

  1. root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2  
  2. root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm  
  3. root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm 

B、配置编译:

  1. ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm \  
  2. -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif \  
  3. -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \  
  4.  -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \  
  5. -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib 

注意这个目录要跟你的tslib安装目录相同!!!

  1. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make 

C、安装到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目录下:

 

  1. root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install 

D、打包编译安装好的QtEmbedded库文件:

  1. root@hrixin-desktop:/usr/local/Trolltech# tar czvf QtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm 

E、建立脚本文件:setenv_arm.sh,输入以下内容:

  1. export QTEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm/  
  2. export PATH="/usr/local/Trolltech/QtEmbedded-4".5.2-arm/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$LD_LIBRARY_PATH 

F、编译ARM版QT应用程序前,先执行此脚本文件:

 

  1. root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-arm# source setenv-arm.sh 

#p#

编译calculator

  1. root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# qmake calculator.pro  
  2. root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# make 

7、在主机上建立NFS启动根文件系统,把编译好的库文件复制到相关目录下。

A、文件系统目录为:/work/root_qtopia/,修改rcS

  1. [root@FriendlyARM /]# vi /etc/init.d/rcS  
  2. #/bin/qtopia & 

建立Trolltech目录:

  1. root@hrixin-desktop:/work/root_qtopia/usr/local# mdkir Trolltech 

B、把打包好的库文件:QtEmbedded-4.5.2-arm.tar.gz复制到/work/root_qtopia/usr/local/Trolltech目录下

  1. root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# tar xzvf QtEmbedded-4.5.2-arm.tar.gz  
  2. root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# cd QtEmbedded-4.5.2-arm/ 

C、复制5-F中编译好的calculator可执行文件到此目录下:

  1. root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm  
  2. # cp /work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator/calculator ./  

D、建立脚本文件

  1. root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm# gedit setenv.sh 

输入以下内容:(把设置tslib环境变量的脚本文件内容,也添加进来)

  1. #!/bin/sh  
  2. export TSLIB_ROOT=/usr/local/tslib  
  3. export TSLIB_TSDEVICE=/dev/input/event0  
  4. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
  5. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
  6. export TSLIB_CALIBFILE=/etc/pointercal  
  7. export TSLIB_FBDEVICE=/dev/fb0  
  8. export QWS_MOUSE_PROTO=Tslib:/dev/input/event0  
  9. export QTDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm  
  10. export QPEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm  
  11. export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH 

E、至此,主机上的文件系统已经配置好,开板通过NFS挂载到此文件系统启动。

启动后,开发板串口终端执行刚才的脚本文件(通过NFS启动,执行脚本文件未成功),设置好环境变量。

检查环境变量是否成功:

  1. [root@FriendlyARM QtEmbedded-4.5.2-arm]# echo $QTDIR  
  2. /usr/local/Trolltech/QtEmbedded-4.5.2-arm 

成功!

如果没有输出,则失败。同样的方法检查其他两个环境变量。
 

F、运行calculator

  1. [root@FriendlyARM QtEmbedded-4.5.2-arm]# ./calculator -qws 

Qtopia移植

Qtopia 是Trolltech 公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台, Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。下面便是他的移植过程。

硬件s3c2410

主机环境:red hot企业版 5.0
 

交叉编译工具:gcc-3.4.5-glibc-2.3.6
 

主机编译工具:gcc-4.1
 

Qtopia源码:qtopia-opensource-src-4.2.0.tar.gz
 

tslib源码:tslib-1.4.tar.gz

#p#

一、tslib移植

第一步:解压tslib-1.4.tar.gz

  1. tar -zxvf tslib-1.4.tar.gz 

第二步:进入解压过的目录

  1. cd tslib-1.4 

第三步:执行tslib-1.4目录下的autogen.sh

  1. ./autogen.sh 

这一步需要安装一些工具:sudo apt-get install automake

第四步:执行autogen.sh脚本所生成的Makefile文件

请打入以下命令:

  1. echo "ac_cv_func_malloc_0_nonnull=yes>$ARCH-linux.cache  
  2. ./configure --host=arm-softfloat-linux-gnu   --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache 

--host是指你的交叉编译器的前最;例如:你的交叉编译器是arm-linux-gcc,则--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc
 

则--host=arm-softfloat-linux-gnu

--prefix 是你执行make install 的时候编译后生成的可执行文件和库文件以及配置文所安装的目录;

configure文件下还有好多选项;你可以执行./configure --help 来进行选择其他项,不过在这里这些选项就够了。

第五步:执行make

第六步:执行make installls

第七步:把指定安装目录下的tslib的文件都copy到你所挂载的根文件下

  1. sudo cp -rf /home/linux/tslib/*       /rootfs/tslib 

第八步:修改/rootfs/tslib下的etc目录中ts.cong文件

vi ts.conf   将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

二、Qtopia移植

第一步:解压qtopia-opensource-src-4.2.0.tar.gz

  1. tar zxvf qtopia-opensource-src-4.2.0.tar.gz  
  2. mv qtopia-opensource-4.2.0 source 

第二步:创建在source同级目录下创建目录target

  1. mkdir target 

第三步:修改源码包
 

1、复制

  1. # cd source  
  2. # cd src/libraries/qtopiabase/  
  3. # cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h  
  4. # cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp 

2、修改时区信息

  1. # vi src/libraries/qtopia/qtimezone.cpp 

将114行的 /usr/share/zoneinfo/ 改为/Qtipia/zoneinfo/ ,保存退出。

  1. # vi src/settings/systemtime/settime.cpp 

将318行的 /usr/share/zoneinfo/ 改为/Qtipia/zoneinfo/ ,保存退出。

3、裁减Qtopia core的库(下列操作后在屏幕上会出现一个光标,否则没有光标根据需求配置)

  1. # vi qtopiacore/qconfig-qpe.h 

首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:

  1. // Qtopia Core  
  2. /*  
  3. #ifndef QT_NO_QWS_CURSOR  
  4. # define QT_NO_QWS_CURSOR  
  5. #endif  
  6. */  
  7. /*  
  8. #ifndef QT_NO_QWS_MOUSE  
  9. # define QT_NO_QWS_MOUSE  
  10. #endif  
  11. #ifndef QT_NO_QWS_MOUSE_AUTO  
  12. # define QT_NO_QWS_MOUSE_AUTO  
  13. #endif  
  14. */ 

其它宏定义根据需要进行注释。
(1) 保存后将qconfig-qpe.h拷贝到global目录。

  1. # cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h 

 (必须进行的操作)

(2)注释掉其他文件里的QT_NO_QWS_CURSOR的定义

  1. # vi qtopiacore/qt/src/corelib/global/qfeatures.h 

注释掉如下内容:
 

  1. /*  
  2. #if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))  
  3.  #define QT_NO_QWS_CURSOR  
  4. #endif  
  5. */ 

(3)保存退出。

  1. # vi qtopiacore/qt/src/corelib/global/qglobal.h 

 注释掉以下内容:

  1. //# define QT_NO_QWS_CURSOR 

4、下面是对编译过程中出现的错误进行的一些修改:

(1)vim qtopiacore/qt/tools/qvfb/qvfbshmem.cpp

注释掉asm/page.h

  1. //#include <asm/page.h> 

(2)vim qtopiacore/qt/tools/qvfb/qvfbmmap.cpp

注释掉asm/page.h

  1. //#include <asm/page.h> 

并修改如下内容

  1. unsigned char *data;  
  2. uint data_offset_value = sizeof(QVFbHeader);  
  3. if (data_offset_value % PAGE_SIZE)  
  4. data_offset_value += PAGE_SIZE - (data_offset_value % PAGE_SIZE); 

为:

  1. unsigned char *data;  
  2. uint data_offset_value = sizeof(QVFbHeader);  
  3. const int page_size = getpagesize();  
  4. if (data_offset_value % page_size)  
  5. data_offset_value += page_size - (data_offset_value % page_size); 

(3)vim src/libraries/qtopiabase/qmemoryfile_unix.cpp +128

修改

  1. f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY); 

为:

  1. f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY ,0777); 

4、修改交叉工具

  1. vim qtopiacore/qt/mkspecs/qws/linux-arm-g++/qmake.conf 

将文件中的arm-linux-***全部修改为arm-softfloat-linux-gnu-**

这样做的前提是我的交叉工具链是arm-softfloat-linux-gnu,如果你的是arm-linux就不用改了。

#p#

第四步:生成Makefile

cd ../target

  1. ../source/configure -release -image /Qtopia -prefix /Qtopia -xplatform   
  2. linux-arm-g++ -arch arm -no-qvfb -displaysize 320x240 -no-modem -extra-qtopiacore-config "  
  3. -release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 4,8,16,32   
  4. -qt-sql-sqlite -no-mouse-linuxtp -qt-mouse-tslib -I/home/linux/tslib/include   
  5. -L/home/linux/tslib/lib " 2>../configureERR.tx 

注意:这里/Qtopia是最后Qtopia的安装路径,安装到主机的某个路径下,最终这个路径和目标板上的路径必须一致。

主要配置选项解说如下:

  1. -xplatform linux-arm-g++ -arch arm 

目标平台为arm-linux,体系结构为arm。

  1. -no-qvfb 

目标平台已支持framebuffer,因而不使用虚拟帧缓冲。

  1. -extra-qtopiacore-config 

为Qtopia core 配置选项。

 

  1. -xplatform qws/linux-arm-g++ -embedded arm 

目标平台编译配置文件使用qtopiacore/qt/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm。

  1. -qconfig qpe 

使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,则使用-qconfig large选项。

  1. -qt-sql-sqlite 

数据库支持Sqlite。

  1. -qt-kbd-usb 

键盘支持usb协议。

  1. -no-mouse-linuxtp -qt-mouse-tslib  
  2. -I/home/linux/tslib/include -L/home/linux/tslib/lib 

触摸屏协议不支持linuxtp,支持tslib,并在后面添加上刚才编译的tslib的头文件和库。

2>../qtopiaconfigureERR.txt

最后将配置过程中的错误输出到qtopiaconfigureERR.txt文件中。

第五步:make

第六步:make install

第七步:cp source/etc/zoneinfo /Qtopia/ -a

第八步:将安装和的目录考到nfsroot目录下

cp /Qtopia /rootfs -a

第九步:配置目标板环境变量脚本

vim qtopia.sh

添加如下内容:

#!/bin/sj
   

  1. export TSLIB_ROOT=/tslib  
  2.     export TSLIB_TSDEVICE=/dev/event0  
  3.     export LD_LIBRARY_PATH=/tslib/lib:$LD_LIBRARY_PATH  
  4.     export QWS_SIZE=320x240 
  5.     export TSLIB_FBDEVICE=/dev/fb0  
  6.     export TSLIB_PLUGINDIR=/tslib/lib/ts  
  7.     export TSLIB_CONSOLEDEVICE=none 
  8.     export TSLIB_CONFFILE=/tslib/etc/ts.conf  
  9.     export POINTERCAL_FILE=/etc/pointercal  
  10.     export QWS_MOUSE_PROTO=Tslib:/dev/event0  
  11.     export TSLIB_CALIBFILE=/etc/pointercal  
  12.     export TSLIB_TSEVENTTYYPE=H3600i 
  13.     export LD_LIBRARY_PATH=/Qtopia/lib:$LD_LIBRARY_PATH  
  14.     export QWS_SW_CURSOR  
  15.     export set HOME=/root  
  16.     export set QPEDIR=/Qtopia  
  17.     export set QWS_KEYBOARD="TTY:/dev/tty1""  
  18.     export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0" 

三、启动Qtopia

第一步:目标板开机

第二步:运行脚本qtopia.sh

./qtopia.sh

第三步:运行qpe

/Qtopia/bin/qpe

这个时候就能看到一个漂亮的界面了。

网关配置

ifconfig eth0 192.168.0.165 netmask 255.255.255.0

【编辑推荐】

Linux操作系统环境建立编译执行

QML教程:Qt-Quick六大开源组件

ubuntu下proftp的编译、安装与测试

详解QtSpeech Qt文本语音输出TTS API

Qt开发者系列之一:来自瑞典的QML狂热爱好者

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-09 15:18:07

QT 编译

2011-06-14 13:59:09

Qt Qt 4.7.3 MYsql

2011-06-09 14:56:53

QT 编译

2011-06-28 13:47:37

Embedded QT ARM

2011-06-13 15:33:24

Qt Qt 4.5

2011-07-05 14:06:17

编译 Qt

2011-06-20 16:38:33

Qt QWidget Qt4.5

2011-06-30 13:37:29

MFC Qt 多国语

2011-06-21 16:51:21

Qt 静态 编译

2009-03-11 09:09:12

Qt开发工具SDK

2011-06-24 13:38:32

QT 编译 安装

2011-06-09 16:47:56

Qt 嵌入式

2011-09-09 17:59:26

QT Widget

2011-07-01 15:04:49

Qt 内省

2011-06-29 10:30:04

VC2005 QT QT 4.4.3

2011-06-23 15:32:05

Qt Windows消息

2011-06-14 14:22:01

Qt ucdmc Creator

2011-06-23 16:24:21

Qt Embedded 交叉编译

2011-06-23 18:16:59

Qt Qtopia

2011-06-21 16:40:58

Qt 静态编译
点赞
收藏

51CTO技术栈公众号