QT在ARM平台的移植(二)

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

QT在ARM平台的移植(二)_第1张图片

 

我们可以把所依赖的库文件拷贝的根文件系统的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/* ./

你可能感兴趣的:(qt,移植)