主机系统:Ubuntu 8.04
主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
交叉编译器:arm-linux-gcc-3.4.1
软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz
qt-x11-opensource-src-4.5.1.tar.gz
tslib-1.4.tar.gz
目标板:TE2440-2 3。5寸TFT触摸显示屏
qt-embedded-linux-opensource-src-4.5.1.tar.gz,qt-x11-opensource-src-4.5.1.tar.gz 最新的QT开发软件包可以在http://home.hackbase.com/link.php?url=http://qt.nokia.com%2F主页下载
1.安装交叉编译器cross-3.4.1
#mkdir /usr/local/arm
解压cross-3.4.1.tar.bz2
把cross-3.4.1.tar.bz2复制到在目录/usr/local/arm下,在终端中进行如下操作:
#cd /usr/local/arm
#tar jxvf cross-3.4.1.tar.bz2
等待解压完成。
#export PATH=/usr/local/arm/3.4.1/bin:$PATH
#arm-linux-gcc -v
这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/3.4.1/bin:$PATH”
2.编译安装qt-x11-opensource-src-4.4.3
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。
将qt-x11-opensource-src-4.4.3.tar.gz复制到/root/local/qt目录下,进行解压,在终端中进行如下操作:
#cd /root/local/qt
#tar zxvf qt-x11-opensource-src.tar.gz
解压完成后,得到/root/local/qt/qt-x11-opensource-src-4.4.3目录。下面就开始进行编译了。
进入/root/local/qt/qt-x11-opensource-src-4.4.3目录,进行编译安装。在终端中进行如下操作:
#./configure –qvfb
#make
#cd tools/qvfb
#make
#cd ../..
#make install
完成后,会在/usr/local目录下生成一个Trolltech目录,形成/usr/local/Trolltech目录,这是qt-x11-opensource-src-4.4.3安装后所在的目录,进入/usr/local/Trolltech会看到一个Qt-4.4.3的目录,将/root/local/qt/qt-x11-opensource-src-4.4.3/tools/qvfb目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.4.3/bin目录下,在终端中操作(确定当前目录是/root/local/qt/qt-x11-opensource-src-4.4.3):
#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.4.3/bin
OK,qt-x11-opensource-src-4.4.3就编译安装成功了
你就可以使用/usr/local/Trolltech/Qt-4.4.3下的Qt进行编程开发了。
这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.3-x86和qt-embedded-linux-opensource-src-4.4.3-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。
3.编译配置QtEmbedded-4.5.2-x86版本
解压qt-embedded-linux-opensource-src-4.5.2.tar.bz2在路径/root/local/qt路径下
# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
修改解压后的文件夹名称
mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86
进入/root/local/qt/qt-x11-opensource-src-4.4.3-x86目录,进行编译安装。在终端中进行如下操作:
#cd /root/local/qt/qt-x11-opensource-src-4.4.3-x86
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 –qvfb
#make(或gmake)
#make install(或gmake install)
OK,QtEmbedded-4.5.2-x86就编译好了。
在需要x86版本QT编译时建立环境变量:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib/:$LD_LIBRARY_PATH
4.编译安装tslib1.4
安装编译过程需用到的程序
# apt-get install autoconf(或autoconf2.13)
# apt-get install automake
# apt-get install libtool
将tslib1.4解压到/home下
#./autogen.sh
#./configure --prefix=/home/zhangle1231/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
#make
#make install-strip //生成瘦身应用程序和库
注意:/home/zhangle1231/duancp/mytslib/为tslib1.4安装的目录在装QtEmbedded-4.5.2-arm版本时需要用到此目录
打包mytslib
# tar czvf mytslib.tar.gz tslib
下载到开发板上/usr/local目录解压
tar xzvf mytslib.tar.gz
设置环境变量,校准触摸屏。
修改开发板上:/etc/profile文件
#!/bin/sh
export QTDIR=/usr
export QPEDIR=/usr
export LD_LIBRARY_PATH=/usr/lib
export TSLIB_ROOT=/usr/local/mytslib
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_TSDEVICE=/dev/touchscreen/0raw
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf /注意检查ts.conf 参数是否设置正确
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal /在执行校准程序calibrate后才会生成此文件
export TSLIB_FBDEVICE=/dev/fb/0
export QWS_MOUSE_PROTO="Tslib:/dev/touchscreen/0raw"
export QWS_KEYBOARD="USB:/dev/tty" /假如提示找不到KEYBOARD则需要这条
export TSLIB_CONSOLEDEVICE=none
export QT_QWS_FONTDIR=/usr/lib/fonts /否则提示在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts找不到字体
export QWS_SIZE=320x240
ln -s /dev/fb/0 /dev/fb0 /需做连接否则找不到设备
注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,
点击触摸屏,看终端有无显示,若有则表明正确。
修改设置文件ts.conf将对应的参数module_raw h3600注释去掉否则会提示: selected device is not a touchscreen I understand错误信息
在开发板/usr/local/mytslib/bin目录下执行校准触摸屏程序:# ./ts_calibrate –qws
会在/etc目录生成一个:pointercal触摸屏效准的必须文件
可以运行此目录下的其他程序进行测试。
5.编译安装QtEmbedded-4.5.2-arm版本
进入/root/local/qt/qt-x11-opensource-src-4.4.3-arm目录,进行编译安装。在终端中进行如下操作:
# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
#mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
# cd qt-embedded-linux-opensource-src-4.5.2-arm
配置编译:
./configure -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 -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 -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
注意:最后两个路径如果设置不对则生成的库文件没办法支持触摸屏
假如提示mkspec/qws/linux-arm-g++/qmake.conf中QMAKE_INCDIR和QMAKE_LIBDIR错误信息
将qmake.conf文件中加入
QMAKE_INCDIR =/home/zhangle1231/mytslib/include
QMAKE_LIBDIR =/home/zhangke1231/mytslib/lib
重新./configure
#make
#make install
如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。请不要在windows下复制此命令否则容易出现一些莫名其妙格式的错误提示。
安装默认目录在/usr/local/trolltech/QtEmbedded-4.5.2-arm
打包编译安装好的QtEmbedded库文件以备以后使用:
# tar czvf QtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm
在编译ARM版QT应用程序前建立环境变量:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH
Export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$
LD_LIBRARY_PATH
编译简单的QT程序或者QtEmbedded-4.5.2-arm自带的程序例子挂载到开发板执行看是否成功
一般会提示找不到fonts libQtGui.so.4 libstdc++.so.6 libQtNetwork.so.4 libQtCore.so.4 librt.so.1等库文件
从/usr/local/trolltech/QtEmbedded-4.5.2-arm/lib 和 /usr/local/arm/3.4.1/arm-linux/lib中拷贝到开发板上即可