移植QtEmbedded-4.5.
2 tslib
1.4 到 S3C
2440
开发环境
操作系统: Vmware6.0 + Ubuntu 8.04。
交叉编译器:arm-linux-gcc-4.3.
2
目标板: mini
2440 + NEC3.5寸屏
1、下载源码包:
在: ftp://ftp.qtsoftware.com/qt/source/ 下载
qt-embedded-linux-opensource-src-4.5.
2.tar.bz
2
qt-x
11-opensource-src-4.5.
2.tar.bz
2
在 http://blog.chinaunix.net/u
2/86708/showart_
19
24834.html 上下载tslib
1.4.tar.gz
2、配置ubuntu 8.04编译环境
安装g++: sudo apt-get g++
安装编译X
11用到的库:sudo apt-get libx
11-dev libxext-dev
安装libxtst-dev: sudo aptitude install libxtst-dev 否则编译qvfb出错。
3、编译及安装qt-x
11-opensource-src-4.5.
2
qt-x
11版本可以产生Qt开发工具,如designer、qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发
板,也可以开发Qt应程序。
tar xjvf qt-x
11-opensource-src-4.5.
2.tar.bz
2
cd qt-x
11-opensource-src-4.5.
2
./configure
make
make install
历经漫长的编译过程,默认安装在/usr/local/Trolltech/Qt-4.5.
2下,编译完成后源程序不要删除,还有用。
4、编译配置QtEmbedded-4.5.
2-x86版本
A、解压
root@hrixin-desktop:/work/qte # tar xjvf qt-embedded-linux-opensource-src-4.5.
2.tar.bz
2
root@hrixin-desktop:/work/qte # mv qt-embedded-linux-opensource-src-4.5.
2 qt-embedded-linux-opensource-src-4.5.
2-x86
root@hrixin-desktop:/work/qte # cd qt-embedded-linux-opensource-src-4.5.
2-x86
B、配置编译:
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.
2-x86 -embedded x86 -qvfb
root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.
2-x86 # make
C、安装到/usr/local/Trolltech/QtEmbedded-4.5.
2-x86目录下:
root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.
2-x86 # make install
D、建立脚本文件:setenv_arm.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.
2-x86/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.
2-x86/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.
2-x86/lib/:$LD_LIBRARY_PATH
E、编译x86版QT应用程序前,先执行此脚本文件:
root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.
2-x86 # source setenv-x86.sh
5、编译安装tslib
1.4
A、安装编译过程需用到的程序
root@hrixin-desktop:/home/hrixin # apt-get install autoconf(或autoconf
2.
13)
root@hrixin-desktop:/home/hrixin # apt-get install automake
root@hrixin-desktop:/home/hrixin # apt-get install libtool
B、配置编译
root@hrixin-desktop:/work/qt # tar xzvf tslib-
1.4.tar.gz
root@hrixin-desktop:/work/qt # cd tslib
生成./configure
root@hrixin-desktop:/work/qt/tslib # source autogen.sh
root@hrixin-desktop:/work/qt/tslib # ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0
_nonnull=yes
root@hrixin-desktop:/work/qt/tslib # make
C、安装
root@hrixin-desktop:/work/qt/tslib # make install-strip //生成瘦身应用程序和库
打包
root@hrixin-desktop:/usr/local # tar czvf tslib.tar.gz tslib
D、复制到NFS文件系统/usr/local目录下解压
root@hrixin-desktop:/work/root_qtopia/usr/local # tar xzvf tslib.tar.gz
E、设置环境变量,校准触摸屏。
在天开板终端建立脚本文件,并执行:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.
你可以测试有没有加载触摸屏驱动,cat /dev/input/event0(这只是我的板子上的触摸屏) ,
点击触摸屏,看终端有无显示,若有则表明正确。
在开发板/usr/local/tslib/bin目录下执行校准触摸屏程序:
[root@FriendlyARM bin]# ./ts_calibrate
可以运行此目录下的其他程序进行测试。
注:
/etc/ts.conf 打开 module_raw input 设置
# Uncomment if you wish to use the linux input layer event interface
module_raw input
至此,触摸屏程序能顺利运行,接下来移植QtEmbedded-4.5.
2,设置好环境变量。
6、编译安装QtEmbedded-4.5.
2-arm版本
A、解压
root@hrixin-desktop:/work/qte # tar xjvf qt-embedded-linux-opensource-src-4.5.
2.tar.bz
2
root@hrixin-desktop:/work/qte # mv qt-embedded-linux-opensource-src-4.5.
2 qt-embedded-linux-opensource-src-4.5.
2-arm
root@hrixin-desktop:/work/qte # cd qt-embedded-linux-opensource-src-4.5.
2-arm
B、配置编译:
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.
2-arm -embedded arm \
-release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse
2 -no-svg -no-webkit -qt-zlib -qt-gif \
-qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \
-no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths
16,
18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \
-no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
注意这个目录要跟你的tslib安装目录相同!!!
root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.
2-arm # make
C、安装到/usr/local/Trolltech/QtEmbedded-4.5.
2-arm目录下:
root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.
2-arm # make install
D、打包编译安装好的QtEmbedded库文件:
root@hrixin-desktop:/usr/local/Trolltech # tar czvf QtEmbedded-4.5.
2-arm.tar.gz QtEmbedded-4.5.
2-arm
E、建立脚本文件:setenv_arm.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.
2-arm/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.
2-arm/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.
2-arm/lib/:$LD_LIBRARY_PATH
F、编译ARM版QT应用程序前,先执行此脚本文件:
root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.
2-arm # source setenv-arm.sh
编译calculator
root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.
2-arm/examples/widgets/calculator # calculator.pro
root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.
2-arm/examples/widgets/calculator # make
7、在主机上建立NFS启动根文件系统,把编译好的库文件复制到相关目录下。
A、文件系统目录为:/work/root_qtopia/,修改rcS
[root@FriendlyARM /]# vi /etc/init.d/rcS
#/bin/qtopia &
建立Trolltech目录:
root@hrixin-desktop:/work/root_qtopia/usr/local # mdkir Trolltech
B、把打包好的库文件:QtEmbedded-4.5.
2-arm.tar.gz复制到/work/root_qtopia/usr/local/Trolltech目录下
root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech # tar xzvf QtEmbedded-4.5.
2-arm.tar.gz
root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech # cd QtEmbedded-4.5.
2-arm/
C、复制5-F中编译好的calculator可执行文件到此目录下:
root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.
2-arm # cp /work/qt/qt-embedded-linux-opensource-src-4.5.
2-arm/examples/widgets/calculator/calculator ./
D、建立脚本文件
root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.
2-arm # gedit setenv.sh
输入以下内容:(把设置tslib环境变量的脚本文件内容,也添加进来)
#!/bin/sh
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.
2-arm
export QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.
2-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH
E、至此,主机上的文件系统已经配置好,开板通过NFS挂载到此文件系统启动。
启动后,开发板串口终端执行刚才的脚本文件(通过NFS启动,执行脚本文件未成功),设置好环境变量。
检查环境变量是否成功:
[root@FriendlyARM QtEmbedded-4.5.
2-arm]# echo $QTDIR
/usr/local/Trolltech/QtEmbedded-4.5.
2-arm
成功!
如果没有输出,则失败。同样的方法检查其他两个环境变量。
F、运行calculator
[root@FriendlyARM QtEmbedded-4.5.
2-arm]# ./calculator -qws &
From:http://hrixin.blog.
163.com/blog/static/
1004
23
173
20097
1233457694/
1.下载qt-embedded-linux-opensource-src-4.5.
2.tar.gz和 tslib-
1.4.tar.gz
2.交叉编译
#cd tslib
#vi do.sh
#!/bin/sh
./configure --build=i386-linux --host=arm-linux ac_cv_func_malloc_0
_nonnull=yes CC=/usr/local/arm/4.
2.
2-eabi/usr/bin/arm-linux-gcc CXX=/usr/local/arm/4.
2.
2-eabi/usr/bin/arm-linux-g++ --prefix=$PWD/build
#chmod 755
#./do.sh
#make
#make install
#cd qt-embedded-linux-opensource-src-4.5.
2
#mkdir libts
#cp (***tslib)/build/lib/libts* libts/
#cp (***tslib)/build/include/* libts/
修改mkspecs/qws/linux-armv6-g++/qmake.conf,加入下面几行设置qmake的FLAGS:
#qwdu added
QMAKE_INCDIR = (****)/qt-embedded-linux-opensource-src-4.5.
2/libts
QMAKE_LIBDIR = (****)/qt-embedded-linux-opensource-src-4.5.
2/libts
#vi do.sh
#!/bin/sh
./configure \
-opensource \
-prefix /***/***(install dir) \
-release \
-shared \
-no-qt3support \
-no-xmlpatterns \
-no-svg \
-no-webkit \
-qt-zlib \
-qt-gif \
-qt-libtiff \
-qt-libpng \
-qt-libmng \
-qt-libjpeg \
-make libs \
-make tools \
-nomake examples \
-nomake docs \
-nomake demo \
-no-nis \
-no-cups \
-no-iconv \
-no-dbus \
-no-openssl \
-xplatform qws/linux-armv6-g++ \
-embedded arm \
-little-endian \
-qt-freetype \
-depths
16 \
-qt-gfx-linuxfb \
-no-gfx-transformed \
-no-gfx-multiscreen \
-no-gfx-vnc \
-no-gfx-qvfb \
-qt-kbd-tty \
-qt-kbd-usb \
-qt-mouse-tslib \
-qt-mouse-pc \
-no-glib
#chmod 755 do.sh
#./do.sh
#make
#make install
在开发板上设置环境变量
#vi /usr/etc/rc.local
#!/sh/bin
export TSDIR=/usr/tslib
export PATH=$TSDIR/bin:$PATH
export LD_LIBRARY_PATH=$TSDIR/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CALIBFILE=$TSDIR/etc/pointercal
export TSLIB_CONFFILE=$TSDIR/etc/ts.conf
export TSLIB_PLUGINDIR=$TSDIR/plugins
export TSLIB_TSDEVICE=/dev/ts0
export TSLIB_TSEVENTTYPE=H3600
export QTDIR=/usr/qt
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QTDIR/plugins/
export QT_QWS_FONTDIR=$QTDIR/fonts
#export QWS_MOUSE_PROTO=LinuxTP:/dev/ts0
export QWS_MOUSE_PROTO=Tslib:/dev/ts0
#mkdir /usr/qt
把之前编译安装的QT库和程序(qt的install目录)copy到开发板的/usr/qt目录下,具体如下:
bin fonts lib plugins
bin下放入mousecalibration
fonts下放入*qpf字体(字体比较大,占用空间,可以只复制QT自己转化过的qpf字体)
lib下放入libQtCore.so.4.5.
2,libQtGui.so.4.5.
2,libQtNetwork.so.4.5.
2,libQtSql.so.4.5.
2
然后链接下
libQtCore.so.4 -> libQtCore.so.4.5.
2
libQtGui.so.4 -> libQtGui.so.4.5.
2
libQtNetwork.so.4 -> libQtNetwork.so.4.5.
2
libQtSql.so.4 -> libQtSql.so.4.5.
2
#mkdir /usr/tslib
再把之前编译安装的Tslib库和程序(tslib的bulid目录)copy到开发板的/usr/tslib目录下,具体如下:
bin etc include lib plugins
设置完毕
qt的库比较大,可以arm-linux-strip下
#sh /usr/etc/rc.local
#ts_calibrate
#mousecalibration
这两个程序测试结果成功
在mini
2440上移植qt embedded for linux 4.5.
2
作者: 孙晓明 ,华清远见嵌入式学院 讲师。
【实验环境】
1、主 机:Fedora9 DVD 发行版
2、目标机:mini
2440 友善之臂
3、源码包:
ftp://ftp.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.
2.tar.gz
4、编译器 arm-linux-gcc-4.
1.
2
http://qtextended.org/downloads/toolchains/arm9
20t-eabi.tgz
我这几天移植qt-embedded-linux-opensource-src-4.5.
2 因为之前使用友善的 arm-linux-gcc-4.3.
2编译qt-embedded-linux-opensource-src-4.5.
2 没有错误,但是运行例子程序example/widget/analogclock/analogclock -qws & 就会出段错误, 所有改用 openmoko的arm-linux-gcc-4.
1.
2编译, 最后可以成功看到界面。
移植的tslib
1.4 在,并且运行ts_calibrate 五点校准,触摸屏是有反应的,并能生成/etc/pointercal
ts_test 也是好使的,拖拽都没有问题。 但是就是运行移植的 QTE的程序 触摸屏一点反应也没有。 顺便说一下,内核还是用的mini
2440出厂时nand里的linux-
2.6.
29,没有动过,触摸屏已经是被内核支持了。
这是我配置的环境变量:
以下环境变量都是我在终端敲入的
export QTDIR=/usr/local/QtEmbedded-4.5.
2-moko-arm
export QPEDIR=/usr/local/QtEmbedded-4.5.
2-moko-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/event
这是我安装tslib
1.4的步骤:
一、tslib移植
第一步:解压tslib-
1.4.tar.gz
tar -zxvf tslib-
1.4.tar.gz
第二步:进入解压过的目录
cd tslib-
1.4
第三步:执行tslib-
1.4目录下的autogen.sh
./autogen.sh
第四步:执行autogen.sh脚本所生成的Makefile文件
在命令行打入以下命令:
echo "ac_cv_func_malloc_0
_nonnull=yes" >$ARCH-linux.cache
./configure --host=arm-linux --prefix=/usr/local/tslib --cache-file=$ARCH-linux.cache
第五步:
make
make install
第六步:把指定安装目录下的tslib的文件都copy到你所挂载的根文件下
sudo cp -a /home/linux/tslib/* /opt/FriendlyARM/mini
2440/root_qtopia/usr/local/tslib/
第七步:修改/opt/FriendlyARM/mini
2440/root_qtopia/usr/local/tslib/ 下的etc目录中ts.conf文件
vi ts.conf 将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误
|