fedora15下安装QT/E搭建

时间:2022-07-01 20:09:11

移植QT/E到ARM设备(一)

我本次移植已有的条件:fedora15,已搭建好交叉编译环境,nfs服务器,以及qt的安装:

 

移植开始:

一、编译QT/E环境(有的文件如果宿主机上没有的话自己建立文件夹):

#cd /home/sprife/qt4/for_arm/

 

首先将qt-embedded-linux-opensource-src-4.4.0.tar.bz2 和tslib-1.4.tar.bz2放到文件夹for_arm下面


 

#tar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2
#tar xjvf tslib-1.4.tar.bz2

修改脚本文件vi ./tslib-1.4/buid.sh

#############################################

#/bin/sh
export CC=arm-linux-gcc
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache
-prefix=$PWD/../tslib1.4-install
make
make install

#############################################

#./build.sh

#.cd .. 

#cp -a tslib1.4-install/lib/* qt-embedded-linux-opensource-src-4.4.0/lib/

#cp -a tslib1.4-install/include/ts* qt-embedded-linux-opensource-src-4.4.0/include/ 

#cd qt-embedded-linux-opensource-src-4.4.0

#./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -little-endian -qt-mouse-linuxtp -qt-mouse-tslib -I/home/sprife/qt4/for_arm/tslib1.4-install/include -L/home/sprife/qt4/for_arm/tslib1.4-install/lib -prefix /mnt/nfs/Trolltech/qt-embedded-4.4.0

一定要注意:上面这些配置一定要看清楚了,因为已配置就是=是三四个小时(我相信你不会愿意做两次的)

需要注意/home/sprife/qt4/for_arm/这个目录是你的解压文件位置,/mnt/nfs这个是你开发板的挂载目录,这个Trolltech/qt-embedded-4.4.0是你自己在你宿主机上的挂载目录下需要建立的文件夹。

################这里你会经过漫长的四个小时################################################

 

当配置完成后

#make

#make install

若上面的操作没有错误则进行下面的工作(若上面有错,一定要找出错误再做下面的操作,否则,你会浪费很多时间)

#cd /tmp/share                 这是我宿主机的挂载目录,你可以根据自己的需要建立挂载目录

#mkdir Trolltech
#cd Trolltech
#mkdir qt-embedded-4.4.0
#cd qt-embedded-4.4.0

 

#########################################

#cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/
lib/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/etc/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/bin/ ./ -arf

 

//在minicom中挂载宿主机的文件系统

#mount -o nolock,rsize=4096,wsize=4096 192.168.1.12:/tmp/share  /mnt/nfs

成功以后:

#cd /mnt/nfs/Trolltech/qt-embedded-4.4.0

#vi ep.sh

export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=$PWD/etc/ts.conf
export POINTERCAL_FILE=$PWD/etc/ts-calib.conf
export QWS_MOUSE_PROTO=tslib:/dev/event0
export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
export LANG=zh_CN
export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight120:0"

保存退出

#./ep.sh

 

执行触摸屏校准程序:

#./bin/ts_calibrate

这里会出现很多错误:

我遇到的:

错误一:

./bin/ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot y 

解决办法:

利用echo $LD_LIBRARY_PATH,发现环境变量不对。重新执行export LD_LIBRARY_PATH=$PWD/lib

 再执行#./bin/ts_calibrate

错误二:

ts_open: No such file or directory

错误分析:首先你需要查看开发板的/dev下面的lcd设备结点,有的是event0有的是fb0,所以你需要重新

export TSLIB_TSDEVICE=/dev/event0  或者 export TSLIB_TSDEVICE=/dev/fb0(如果你要将这个修改到上面创建的ep.sh脚本下面

那么最好再执行一下:

#env   查看export TSLIB_TSDEVICE=/dev/event0或者 export TSLIB_TSDEVICE=/dev/fb0是否有若没有最好使用export命令直接在命令行执行。

 

错误三:Couldnt open tslib config file: No such file or directory ts_config: Illegal seek

解决:#export TSLIB_CONFFILE=$PWD/etc/ts.conf

 

错误四:

Couldnt load module pthres
No raw modules loaded.
ts_config: Success

 

解决办法#export TSLIB_PLUGINDIR=$PWD/lib/ts

 

我总共出现了上面几个错误:如果你出现不同的错误请参考:http://blog.csdn.net/xiaoyangger/article/details/5369961

完了之后执行:./bin/ts_calibrate

##############################输出信息#########################

xres = 320, yres = 240                                                                               
selected device is not a touchscreen I understand                                                    
Took 10 samples...                                                                                   
Top left : X = -1073360184 Y = -1073618118                                                           
Took 10 samples...                                                                                   
Top right : X = -1073360184 Y = -1073618118                                                          
Took 10 samples...                                                                                   
Bot right : X = -1073360184 Y = -1073618118                                                          
Took 10 samples...                                                                                   
Bot left : X = -1073360184 Y = -1073618118                                                           
Took 10 samples...                                                                                   
Center : X = -1073360184 Y = -1073618118                                                             
1.558322 -0.006303 0.006302                                                                          
1.568846 -0.004712 0.004710                                                                          
Calibration constants: 102126 -413 412 102815 -308 308 65536   

移植QT/E(二)到ARM板

出现上面QT/E(一)最后问题:

没有加载触屏驱动程序,我的微处理器是S3C2410,因而加载驱动时也要加载相对应的驱动:

insmod  s3c2410_ts.ko显示结果如下:

s3c2410 TouchScreen successfully loaded                       
input: s3c2410 TouchScreen as /class/input/input0

 

驱动加载成功。。。。。。。

这里还需要之前所配置的环境变量:

export TSLIB_TSDEVICE=/dev/event0

export QWS_MOUSE_PROTO=tslib:/dev/event0

这里驱动可以提前加载进去内核中,这里就不会配置两次环境变量了

测试./bin/ts_cablirate

校准。。。。。。。。。

QT/E移植三:测试

QT/E移植三:测试 

测试的时候会出现下列问题:
找出宿主机交叉编译目录下的下列文件,若没有,用更目录下的文件

解决方法:
find / name  "libz.so.1"
find / name  "librt.so.1"
find / name  "libstdc++.so.6"
find / name  "libgcc_s.so.1"

当前目录是/tmp/share/t../q../
cp /lib/libz.so.1 ./lib/
cp opt/usr/local/arm/3.4.1/arm-linux/lib/libgcc_s.so.1 ./lib
cp /opt/usr/local/arm/3.4.1/arm-linux/lib/librt.so.1 ./lib
cp /opt/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so.6 ./lib


./digitalclock -qws
结果是一个时钟


写一个程序编译然后挂载开发板端到直接运行程序:步骤如下
在/root/.bash_profile里声明
export QLINUXG=/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/mkspecs/qws/linux-arm-g++
将写的文件放到一个目录下:testqt-x11
#/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0
/bin/qmake –project
////////////上面生成一个.pro文件
#/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0
/bin/qmake –spec $QLINUXG -o Makefile
/////////上面需要指明linux-arm-g++的具体位置,因为直接qmake不能找到它/////////////
#make
//////////////上面生成一个可在开发板上执行的二进制文件,可直接放到开发板上运行