紧接着上次转载的Qt移植教程,下面通过自己调试整整一天的经历告诉各位运行时候的各种问题。
各位应该最少将tslib成功移植到了自己的JZ2440开发板上面了把,然后Qt的arm库文件下的四个目录 lib example demos plugins也移植到了对应目录。以上是前提条件。
之后是将Windows下的(我习惯Windows下写qt然后linux交叉编译)qt文件传到虚拟机linux上面进行交叉编译,最后得到可执行文件。
之后重点就是如何让这个可执行文件顺利运行。首先你要编写启动这个Qt的脚本。
下面是我参考的别人的启动脚本,我是在上面加工后得到。注意我红字标出的地方
1. #!/bin/sh
2. base1=qpe
3. pid=`/bin/pidof $base1`
4. if [ -n "$pid" ]; then
5. killall $base1
6. fi
7.
8. base2=qss
9. pid=`/bin/pidof $base2`
10. if [ -n "$pid" ]; then
11. killall $base2
12. fi
13.
14. base3=quicklauncher
15. pid=`/bin/pidof $base3`
16. if [ -n "$pid" ]; then
17. killall $base3
18. fi
19.
20.
21. base4=fluidlauncher
22. pid=`/bin/pidof $base4`
23. if [ -n "$pid" ]; then
24. killall $base4
25. fi
26.
27. export TSLIB_ROOT=/usr/local/tslib #你自己tslib移植路径
28. export TSLIB_TSDEVICE=/dev/event0 #修改成你的触摸屏驱动(也就是cat以后出乱码的那个)
29. export TSLIB_TSEVENTTYPE=H3600
30. export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
31. export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
32. export TSLIB_CALIBFILE=/etc/pointercal
33. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
34. export TSLIB_CONSOLEDEVICE=none
35. export TSLIB_FBDEVICE=/dev/fb0
36. export QTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm #你自己的Qt移植路径
37.
38.
39. export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/root/tslib/build/lib:$LD_LIBRARY_PATH
40. export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin
41.
42.
43. if [ -c /dev/event0 ]; then #你自己的触摸屏驱动
44. export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"
45. if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
46. rm /etc/pointercal
47. /usr/local/tslib/bin/ts_calibrate #你自己的调试程序位置
48. fi
49. else
50. export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
51. >/etc/pointercal
52. fi
53. export QWS_KEYBOARD=TTY:/dev/tty1
54.
55.
56.
57. FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)
58. #这里应该是修改分辨率,不过我暂时没用过
59. #export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
60. case "$FB_SIZE" in
61. 800,480)
62. export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
63. ;;
64. 480,272)
65. export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
66. ;;
67. *)
68. export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
69. ;;
70. esac
71. #export QWS_DISPLAY=:1
72.
73.
74.
75. export HOME=/root/QtE4Home
76. #下面就是你的qt可执行文件的路径,根据你自己的位置去定
77. #cd /home/linux/arm/qt-4.8.5-arm/demos/embedded/fluidlauncher(qt可执行文件的路径)
78. ./chinesefont -qws
之后执行该脚本,就可以看到你在Windows上面编写的Qt程序了
另外JZ2440的文件系统中注意/bin目录下的qpe.sh和ts_cal.sh根据rcS文件可以得知,ts_cal是校验用的,里面环境变量最好根据你自己移植的qt和tslib对应修改,执行的ts calibrate也修改成你自己新移植的tslib下程序。
qpe这个脚本的环境变量也建议修改为你自己移植过后的位置。另外这个脚本启动了JZ2440的默认开机界面,这里我把他关了,你可以在这里面修改成你自己写的qt,这样开机便会启动你的qt应用。
以上虽然简单,但是捣腾过程很烦,最近一直再弄Qt应用,后续有什么心得会在贴出来的~