QtEmbedded-4.5.3-arm 移植
Qt/E 版本:
QtEmbedded-4.5.3-arm
交叉编译器版本:
arm-linux-gcc 4.1.2
操作系统平台:
Linux -- Red Hat 9.0
开发板平台:
Arm -- S3C2440
1、解压QtEmbedded-4.5.3-arm源码包,进入源码目录
2、./configure -embedded arm -xplatform qws/linux-arm-g++ -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib (-no-qt3support -no-openssl -nomake examples -nomake demos -nomake doc -nomake tools )
注释:
-embedded arm指定目标平台是arm,
-xplatform qws/linux-arm-g++指目标平台编译配置文件使用的是qws/linux-arm-g++文件夹下的配置文件,
-no-mouse-linuxtp -qt-mouse-tslib因为我们使用tslib作为触摸屏校正程序,所以让鼠标不支持linuxtp协议,而支持tslib
-I/usr/local/tslib/include -L/usr/local/tslib/lib指定tslib头文件和库文件
-no-qt3support -no-openssl -nomake examples -nomake demos -nomake doc -nomake tools为了减少编译时间,可以不提供对qt3函数支持以及对openssl的支持,不编译examples,demos,doc,tools,在需要的时候在编译,这里可用另一种方法见“Qt configure 参数不完全说明(转)”
3、#make
#make install
默认是被安装到/usr/local/Trolltech/这个目录
4、设置环境变量
vi /etc/profile
添加export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH
source /etc/profile
5、例子
我们主要是用到/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib这个库,我们可以找个qt应用程序把它放到开发板上运行,这个qt应用程序必须是用QtEmbedded-4.5.3-arm编译才能运行到开发板上,而且运行时必须依赖上面的库文件
进入源码包中examples随便找个例子
cd examples/widgets/wiggly
在这个文件夹中没有Makefile文件
我们可以使用bin目录下的qmake工具生成Makefile文件
#../../../bin qmake
#make
#make install
将编译好的wiggly文件放到根文件系统的usr/bin目录下
cp wiggly /home/zy/root_qtfs/usr/bin
查看他依赖那些库文件
arm-linux-readelf -d wiggly
我们可以把所依赖的库文件拷贝的根文件系统的usr/lib目录下
cp -a libQtCore.* libQtNetwork.* libQtGui.* /home/zy/root_qtfs/usr/lib
rm -f *.la *.prl
设置开发板上的环境变量
qtconfig脚本
#!bin/sh
export QTLIB=/usr/lib
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:$QTLIB #设置加载库路径,qt的库和tslib都加上
export QWS_SIZE=320*240 #显示大小
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0" #字体大小
if [ -f "$TSLIB_CALIBFILE" ]; then
wiggly -qws&
else
ts_calibrate
wiggly -qws&
fi
在根文件系统中的etc/init.d/rcS初始化脚本中加入qtconfig&让它运行这个
脚本
将qtconfig复制到根文件usr/bin目录下
并加上可执行权限(chmod 777 qtconfig)
制作文件系统mkyaffs2image root_qtfs root_qtfs.bin
出现错误:
1、Please press Enter to activate this console. Segmentation fault . Could not read calibration: "/etc/pointercal"
解决方法:tslib/etc/ts.conf文件,第二行module_raw input的注释去掉,同时要其前面不能有空格(若有空格则出现上述错误)
2、QFontDatabase:Cannot find font directory /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts installed correctly?
解决方法:因为qt程序默认会到/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts 这个路径下查找字体文件现在我们的根文件系统并没有这个路径,应先建立这个目录
cd usr/local
mkdir -p Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
将机子上的/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts全部文件拷到上述目录
cp /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts/* ./