QT移植,首先移植tslib
1.tslib移植
1.1 解压源码:
1.2 cd tslib, ./build.sh
1.3 在/opt/arm/tslib里就是生成的目标文件
2.qt移植
2.1 解压源码
2.2 首先看一下build.sh脚本,看一下注释内容 ,添加 -lts到qmake.conf文件,然后再执行./build.sh
2.3 make
2.4 make install (生成目标的文件会在这里/opt/arm/qt)
3.如何使用/opt/arm/tslib和/opt/arm/qt?
3.1mkdir rootfs/home/qtopia;
拷贝qt和tslib到/home/qtopia
3.2在开发板上创建文件rootfs/etc/profile
可以参考(项目文件里面的/rootfs/etc/profile)
这个配置文件用于设置系统的环境变量
在此文件中添加关于tslib和qt相关的内容(给软件运行时使用)
#指定QT和TSLIB的目录
export QTDIR=/home/qtopia/qt
export TSLIBDIR=.home/qtopia/tslib
#添加PATH和LD_LIBRARY_PATH
export PATH=$TSLIBDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIBDIR/lib:$LD_LIBRARY_PATH
#添加LCD和触摸屏的设备节点
export TELIB_FBDEVICE=/dev/fb0
#通过cat /proc/bus/input/devices查看你当前板卡的触摸屏的设备节点是什么
export TSLIB_TSDEVICE=/dev/event3
#固定
export TSLIB_CONFFILE=$TSLIBDIR/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIBDIR/lib/ts
export TSLIB_CALIBFILE=$TSLIBDIR/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
#用于QT
#export QWS_MOUSE_PROTO="Tslib:/dev/event1 Intellimouse:/dev/mousr2"
#注意Tslib:/dev/event3关联的触摸屏的设备节点
一定要确认好!
export QWS_SIZE=800X480
#按键支持(包括板卡GPIO按键和USB标准键盘,必须遵循input子系统)
#export QWS_KEYBOARD="TTY:/dev/event4 TTY:/dev/event5"
#export QWS_KEYBOARD="TTY:/dev/event1"
#(qt版本小于4.7)
export QWS_KEYBOARD=USB:/dev/event1
#字库
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
#图片显示相关
export QT_PLUGIN_PATH=$QTDIR/plugins
#字体显示有关系
export QWS_DISPLAY="LinuxFB:mmWidth180:0"
4.首先要测试tslib和触摸屏搭配是否OK?
ts_test软件即可!
问题一:
No raw modules loaded.
ts_config:No such file or directory
解决:
修改opt/rootfs/home/qtopia/tslib/etc/ts.conf
将#module_raw input修改module_raw input
问题2:
如果console中断失效?
解决:
修改export QWS_KEYBOARD=USB:/dev/event1为:
export QWS_KEYBOARD=TTY:/dev/event1
5.测试QT和tslib之间的联系
思路:运行一个QT的测试软件,如何进行对其交叉编译呢?
这时一定要利用交叉编译qt源代码产生的qmake工具(/opt/arm/qt/bin/qmake)
/opt/arm/qt/bin/qmake -project
/opt/arm/qt/bin/qmake
make
拷贝可执行文件到开发板上
./可执行文件 -qws
养成习惯fileQT软件
问题:
./animatedtiles: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决方法:
从交叉编译器中拷贝libstdc++.*到rootfs/lib/
如果你当前系统中有多个编译器,用which is
arm-linux-gcc找到当前你使用的编译器所在的路径
用find . -name libstdc++*找到库
./animatedtiles: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /home/qtopia/qt/lib/libQtGui.so.4)
./animatedtiles: /lib/libc.so.6: version `GLIBC_2.10' not found (required by /home/qtopia/qt/lib/libQtNetwork.so.4)
./animatedtiles: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /home/qtopia/qt/lib/libQtCore.so.4)
解决:
cp 交叉编译器的lib/* rootfs/lib/* -frd
交叉编译根的arm-concenwit-linux-gnueabi/concenwit/usr/lib