QT开发环境的建立以及QTE4.6.3、tslib1.4的移植过程
1.首先是建立Linux开发环境
1.1.在windowsXP下安装博创公司提供的虚拟机软件VMware Workstation,版本为VMware-workstation-full-7.0.1-227600,安装完成后进行汉化,由于要覆盖文件,所以要先在任务管理器中结束所有有关VMware的进程,然后将汉化文件覆盖到VMware的安装目录,至此VMware虚拟机软件安装完成。
1.2.虚拟机软件安装成功后,就开始安装Linux操作系统,这里我使用的Ubuntu10.04长期支持版,可以到Ubuntu的官方网站上下载,下载地址为:http://www.ubuntu.org.cn/desktop/get-ubuntu/download/或者http://releases.ubuntu.com/lucid/(第一个不行就使用第二个);下载完成后打开虚拟机,在起始页上点击新建虚拟机,然后选中Ubuntu镜像文件的路径,然后是输入用户名、下一步、最后是定制硬件,可以根据自己需要添加,这里我把内存调整为1G,额外添加了一个串口,最后完成开始自动安装,这个过程是全自动的,基本不需要手动操作,下面我们就是等待安装完成。(安装的快慢跟你的机器配置有关);安装完成,大概用了不到两个小时,但是在登录界面却无法使用键盘。解决方法:(1) 开户屏幕键盘功能 在上图开机界面在右下角单击小人图案,再单击“Universal Access Perferences”,点击“Universal Access Perferences”对话框,在对话框中选中“Use on-screen keyboard”(使用屏幕键盘),以开启屏幕键盘功能,这时会有一个屏幕键盘快速闪过; (2) 重新启动打开屏幕键盘输入密码开启屏幕键盘功能后重新启动系统,这时就可以通过上面的步骤打开屏幕键盘,输入相应的密码 (3) 登录后键盘功能正常使用。 注意在(1)步后没出现软键盘, 需要重启机器。 (4)进入系统之后,要修改/etc/default/console-setup. 的文件内容 原文 XKBMODEL="SKIP" XKBLAYOUT="us" XKBVARIANT="U.S. English" XKBOPTIONS="" 改成 XKBMODEL="pc105" XKBLAYOUT="us" XKBVARIANT="" XKBOPTIONS="" 然后重启,这样在登入界面时就可能使用键盘了。这里我们使用root账户,在命令行输入:sudo passwd root,输入两次密码后添加root账户成功,重启,使用root账户登录,然后是设置软件源,首先备份源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup,而后用gedit或其他编辑器打开: gedit /etc/apt/sources.list,到官方选中合适的源,这里我们选择163的源,具体为:deb http://mirrors.163.com/ubuntu/ lucid main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-backports main restricted universe multiverse,替换掉文件中所有的内容保存编辑好的文件:,然后,刷新列表:
apt-get update
终端设置小技巧
因为经常会用到终端:所以把终端加到右键菜单:
apt-get install nautilus-open-terminal
至此我们的Linux操作系统基本安装成功。但是语言还是英文,大家可以根据自己喜好是否调整为中文,调整方法,打开system菜单下administration下的language support,出现语言配置对话框,然后你可以选中最下面的installl/removae language安装中文或者其他语言,在调整后重启系统起效!
2.安装开发工具QT
首先需要说明的是,我们把QT的安装分为两部分,第一、安装在LinuxPC机下开发的QT以及IDE开发工具QT Creator。第二、安装交叉编译的QTE以及移植QTE到博创star2410开发板,下面我们开始正式安装。
2.1.安装LinuxPC机上的开发工具QT
首先我们到QT的官方网站下载Linux下的QT版本,下载地址为:http://qt.nokia.com/downloads-cn,这里我们直接下载最新版本的Qt SDK for Linux/X11 32-bit** (370 Mb) (软件开发工具包)里面包括QT4.6.3以及QT IDE开发工具QT Creator,由于我们是直接下载编译好的二进制包,所以我们只需要更改一下文件的属性,变为可执行就行了,具体命令为:chmod +x qt-sdk-linux-x86-opensource-2010.04.bin,这样我们就能在文件的目录里执行./qt-sdk-linux-x86-opensource-2010.04.bin,然后就开始安装了。然后点击next、I accept the agreement、next、(默认安装路径为/opt/qtsdk-2010.04,你可以根据自己喜好更改路径,这里我们选择默认)、next、(在选择组件对话框里我们依然默认)next、(外部管理对话框,默认)next、(准备安装)next后开始安装,我们只需要等待就行,最后点击finish安装完成,我们会在桌面发现多了一个图标,这说明我们的QT以及Qt Creator安装成功,最后一步就是设置环境变量,具体步骤如下:使用编辑器打开配置文件 命令为:gedit ~/.profile ,在文件的最后添加export QTDIR=$PATH:/opt/qtsdk-2010.04/qt
export PATH=$PATH:/opt/qtsdk-2010.04/qt/bin
环境变量设置完成,重启系统,但是现在我们的QT还不能使用,因为我们的LinuxPC机没有安装标准C开发环境,最后再执行一条命令:apt-get install build-essential libncurses5-dev,至此我们的PC机QT开发工具就安装完成了,可以正常使用了。
2.2.搭建QTE-arm环境并移植QTE以及tslib1.4到博创star2410开发板
首先我们要先安装交叉编译工具链,这里我们使用的交叉编译器为博创公司提供的版本为arm-linux-gcc3.4.6,将arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2放到/root/song目录下,然后打开目录解压编译器,具体命令为:tar xjvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 -C /usr/local/(注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。),这样我们就将编译器安装在了/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/下,然后设置环境变量,仍然是:gedit ~/.profile 在文件最后添加:export PATH=$PATH:/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/bin,保存文件,然后执行:source ~/.profile是变量立即生效,然后在命令行下输入:arm-linux-gcc -v检查是否安装成功,安装成功则出现:Reading specs from /usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/bin/../lib/gcc/arm-linux/3.4.6/specs
Configured with: /home/samba/armlinux/crosstool/crosstool-0.42/build/arm-linux/gcc-3.4.6-glibc-2.3.6/gcc-3.4.6/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux --with-headers=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/include --with-local-prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.6
否则可能是环境变量设置问题,仔细检查应该就能解决。
交叉编译器安装成功后,我们就开始解压及编译触摸屏软件tslib1.4.tar.gz,具体步骤如下:打开文件所在目录:cd /root/song ,解压:tar xjvf tslib-1.4.tar.bz2,进入解压目录:cd tslib-1.4,修改脚本:gedit build.sh,原来的内容为:#/bin/sh
export CC=arm-linux-gcc
./autogen.sh
#./configure --prefix=/mnt/nfs/tslib1.4-install --host=arm-linux
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache -prefix=/mnt/nfs/Trolltech/QtopiaCore-4.3.3/tslib1.4
make
make install
修改后:#/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=/usr/local/tslib
make
make install
保存退出并执行:./build.sh开始编译并安装,中间没有出错,成功安装到了/usr/local/tslib目录下,tslib1.4编译成功。下面开始编译安装qte4.6.3-arm,首先到官方下载最新版的qte,版本为:qt-everywhere-opensource-src-4.6.3.tar.gz ,下载地址为:http://qt.nokia.com/downloads/embedded-linux-cpp,然后开始编译安装,
具体步骤如下:进入文件所在目录:cd /root/song,解压:tar xzvf qt-everywhere-opensource-src-4.6.3.tar.gz,进入解压目录:cd qt-everywhere-opensource-src-4.6.3,修改错误文件:gedit src/3rdparty/freetype/include/freetype/config/ftconfig.h,将第330行修改为:"orr %0, %0,%2, lsl #16/n/t" /* %0 |= %2 << 16 */,防止出现如下错误:text/qfontengine_ft.cpp: In member function `bool QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat)':
text/qfontengine_ft.cpp:696: warning: converting to `int' from `qreal'
{standard input}: Assembler messages:
{standard input}:781: Error: register or shift expression expected -- `orr r3,r2,lsl#16'
{standard input}:792: Error: register or shift expression expected -- `orr r2,r3,lsl#16'
{standard input}:7752: Error: register or shift expression expected -- `orr r3,r0,lsl#16'
{standard input}:7765: Error: register or shift expression expected -- `orr r1,r0,lsl#16'
make[1]: *** [.obj/release-shared-emb-arm/qfontengine_ft.o] 错误 1
make[1]:正在离开目录 `/root/song/qt-everywhere-opensource-src-4.6.3;然后开始配置configure:命令为:./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /usr/local/Trolltech/qte4.6.3-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -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 -I/usr/local/tslib/include -L/usr/local/tslib/lib -v -D__ARM_ARCH_5TEJ__,然后输入o回车,再输入yes回车开始配置,配置成功提示:Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/qte4.6.3-arm
To reconfigure, run 'make confclean' and 'configure'.
然后开始编译:make,需要等待一会,快慢视个人配置。大概半个小时左右make完毕,然后执行:make install,完成后qte就被安装在了/usr/local/qte4.6.3-arm下面,至此,qte4.6.3-arm编译安装成功。
然后我们开始把qte移植到博创star2410开发板上,具体步骤为:1.复制tslib库以及ts目录,cp /usr/local/tslib/lib/libts* /usr/local/qte4.6.3-arm/lib/,cp -rf /usr/local/tslib/lib/ts /usr/local/qte4.6.3-arm/lib/,进入目录:cd /usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/lib,继续拷贝库:cp libgcc_s.so.1 /usr/local/qte4.6.3-arm/lib/,cp librt.so.1 /usr/local/qte4.6.3-arm/lib/,cp libstdc++.so.6 /usr/local/qte4.6.3-arm/lib/,cp libz.so.1 /usr/local/qte4.6.3-arm/lib/,拷贝库完成,对于有些库文件,可以裁剪一下,命令如下:arm-linux-strip libstdc++.so.6,最后将/usr/local/qte4.6.3-arm/lib/中的所有文件打包,命令如下:tar czvf lib-new.tar.bz2 *,然后再将tslib校准程序移植,cd /usr/local/tslib/lib,拷贝需要的库文件,cp /usr/local/qte4.6.3-arm/lib/librt.so.1 .,cp /usr/local/qte4.6.3-arm/lib/libz.so.1 .,最后将整个tslib目录打包,命令如下:tar czvf touch.tar.bz2 *,最后将我们所有打包的文件以及前面交叉编译的MPlayer全部放到一个目录下,这里我建立了一个embed目录,将所有包放进去,解压整理,最终生成一个应用程序包,其中包括MPlayer,触摸屏校准程序,usb设备挂载,以及qte4.6.3,包的名字为:embed.tar.bz2。至此我们的移植以接近尾声,下面我们把编译好的应用程序包下载到star2410上,步骤如下:先在Linux下面使用minicom连接上板子,设置板子的IP使和主机在同一网段,命令如下:ifconfig eth0 192.168.88.189 broadcast 192.168.88.254 ,然后再执行inetd,是更改生效。然后在windows下使用FlashFXP软件匿名连接板子的IP,连接上后,将embed.tar.bz2传送到板子,很快就可以传完,然后在板子上,进入root目录,执行命令:mv /root/system/var/ftp/pub/embed.tar.bz2 .,然后解压程序包:tar xzvf embed.tar.bz2,这样root目录下就出现了我们的程序目录,首先我们进入touch目录进行触摸屏校准,我们先写touch.sh一个脚本方便程序执行,脚本内容如下:#bin/sh
export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib:/lib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CONSOLEDEVICE=none
export QT_TSLIBDIR=$PWD/lib
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
/root/touch/bin/ts_calibrate
/root/touch/bin/ts_test
保存退出,执行脚本:./touch.sh,出现如下错误:No raw modules loaded.
ts_config: Success
No raw modules loaded.
ts_config: Success
解决方法:vi etc/ts.conf,将文件中第二行# module_raw input前面的#号去掉,然后在执行脚本,屏幕上出现校准程序,点击十字架开始校准,至此,tslib1.4移植成功!
最后我们进入qte4.6.3目录中,同样我们也写一个脚本方便程序运行,脚本qt.sh内容如下:export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib:/lib
export QTDIR=$PWD
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CONSOLEDEVICE=none
export QT_TSLIBDIR=$PWD/lib
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 QT_QWS_FONTDIR=$PWD/lib/fonts
export LANG=zh_CN
export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight120:0"
/root/qte4.6.3/bin/demo -qws
保存退出,然后执行:./qt.sh
出现以下错误,并且触摸屏不能使用:No raw modules loaded.
QWSTslibMouseHandlerPrivate: ts_config() failed with error: 'No such file or di'
Please check your tslib installation!
解决方法:还是将etc/ts.conf文件中的第二行前面的#号去掉,保存退出,在执行./qt.sh,成功,无任何提示,屏幕显示我们的例子,并且触摸屏使用正常,至此,我们的qte4.6.3、tslib1.4的编译安装以及移植到博创的star2410板子上的工作全部完成!
http://blog.csdn.net/songjinshi/article/details/5731580