开发者社区> 长空翱翔> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

qt4、触摸屏编译、移植

简介: 主机系统:Ubuntu 8.04 主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4) 交叉编译器:arm-linux-gcc-3.4.1 软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz          qt-x11-opensource-src-4.5.1.tar.gz          tslib-1.4.tar.gz 目标板:TE2440-2 3。
+关注继续查看

主机系统:Ubuntu 8.04

主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4)

交叉编译器:arm-linux-gcc-3.4.1

软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz

         qt-x11-opensource-src-4.5.1.tar.gz

         tslib-1.4.tar.gz

目标板:TE2440-2 35TFT触摸显示屏

 

qt-embedded-linux-opensource-src-4.5.1.tar.gzqt-x11-opensource-src-4.5.1.tar.gz 最新的QT开发软件包可以在http://home.hackbase.com/link.php?url=http://qt.nokia.com%2F主页下载

 

1.安装交叉编译器cross-3.4.1

#mkdir /usr/local/arm

解压cross-3.4.1.tar.bz2

cross-3.4.1.tar.bz2复制到在目录/usr/local/arm下,在终端中进行如下操作:

#cd /usr/local/arm

#tar jxvf cross-3.4.1.tar.bz2

等待解压完成。

#export PATH=/usr/local/arm/3.4.1/bin:$PATH

#arm-linux-gcc -v

这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/3.4.1/bin:$PATH

2.编译安装qt-x11-opensource-src-4.4.3

qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。

qt-x11-opensource-src-4.4.3.tar.gz复制到/root/local/qt目录下,进行解压,在终端中进行如下操作:

#cd /root/local/qt

#tar zxvf qt-x11-opensource-src.tar.gz

解压完成后,得到/root/local/qt/qt-x11-opensource-src-4.4.3目录。下面就开始进行编译了。

进入/root/local/qt/qt-x11-opensource-src-4.4.3目录,进行编译安装。在终端中进行如下操作:

#./configure –qvfb

#make

#cd tools/qvfb

#make

#cd ../..

#make install

完成后,会在/usr/local目录下生成一个Trolltech目录,形成/usr/local/Trolltech目录,这是qt-x11-opensource-src-4.4.3安装后所在的目录,进入/usr/local/Trolltech会看到一个Qt-4.4.3的目录,将/root/local/qt/qt-x11-opensource-src-4.4.3/tools/qvfb目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.4.3/bin目录下,在终端中操作(确定当前目录是/root/local/qt/qt-x11-opensource-src-4.4.3):

#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.4.3/bin

OKqt-x11-opensource-src-4.4.3就编译安装成功了

你就可以使用/usr/local/Trolltech/Qt-4.4.3下的Qt进行编程开发了。

 

这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.3-x86qt-embedded-linux-opensource-src-4.4.3-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddeddarm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。

 

3编译配置QtEmbedded-4.5.2-x86版本

解压qt-embedded-linux-opensource-src-4.5.2.tar.bz2在路径/root/local/qt路径下

# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2

修改解压后的文件夹名称

mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86

进入/root/local/qt/qt-x11-opensource-src-4.4.3-x86目录,进行编译安装。在终端中进行如下操作:

#cd /root/local/qt/qt-x11-opensource-src-4.4.3-x86

./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 –qvfb

#make(gmake)

#make install(gmake install)

OKQtEmbedded-4.5.2-x86就编译好了。

在需要x86版本QT编译时建立环境变量:

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

4编译安装tslib1.4

 

安装编译过程需用到的程序

 # apt-get install autoconf(或autoconf2.13
 # apt-get install automake
 # apt-get install libtool

tslib1.4解压到/home

#./autogen.sh
#./configure --prefix=/home/zhangle1231/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

#make

#make install-strip //生成瘦身应用程序和库

 注意:/home/zhangle1231/duancp/mytslib/tslib1.4安装的目录在装QtEmbedded-4.5.2-arm版本时需要用到此目录

打包mytslib

# tar czvf mytslib.tar.gz tslib

下载到开发板上/usr/local目录解压

tar xzvf mytslib.tar.gz

设置环境变量,校准触摸屏。
修改开发板上:/etc/profile文件

#!/bin/sh

export QTDIR=/usr

export QPEDIR=/usr

export LD_LIBRARY_PATH=/usr/lib

export TSLIB_ROOT=/usr/local/mytslib

export TSLIB_TSEVENTTYPE=H3600

export TSLIB_TSDEVICE=/dev/touchscreen/0raw

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  /注意检查ts.conf 参数是否设置正确

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal  /在执行校准程序calibrate后才会生成此文件

export TSLIB_FBDEVICE=/dev/fb/0

export QWS_MOUSE_PROTO="Tslib:/dev/touchscreen/0raw"

export QWS_KEYBOARD="USB:/dev/tty"  /假如提示找不到KEYBOARD则需要这条

export TSLIB_CONSOLEDEVICE=none

export QT_QWS_FONTDIR=/usr/lib/fonts /否则提示在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts找不到字体

export QWS_SIZE=320x240

ln -s /dev/fb/0 /dev/fb0   /需做连接否则找不到设备

注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,

点击触摸屏,看终端有无显示,若有则表明正确。

修改设置文件ts.conf将对应的参数module_raw h3600注释去掉否则会提示: selected device is not a touchscreen I understand错误信息

在开发板/usr/local/mytslib/bin目录下执行校准触摸屏程序:# ./ts_calibrate –qws

会在/etc目录生成一个:pointercal触摸屏效准的必须文件

可以运行此目录下的其他程序进行测试。

 

5.编译安装QtEmbedded-4.5.2-arm版本

进入/root/local/qt/qt-x11-opensource-src-4.4.3-arm目录,进行编译安装。在终端中进行如下操作:

# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2

#mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
# cd qt-embedded-linux-opensource-src-4.5.2-arm

 

配置编译

./configure -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++ -embedded arm -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

注意:最后两个路径如果设置不对则生成的库文件没办法支持触摸屏

假如提示mkspec/qws/linux-arm-g++/qmake.confQMAKE_INCDIRQMAKE_LIBDIR错误信息

qmake.conf文件中加入

QMAKE_INCDIR =/home/zhangle1231/mytslib/include

QMAKE_LIBDIR =/home/zhangke1231/mytslib/lib

重新./configure

#make

#make install

如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。请不要在windows下复制此命令否则容易出现一些莫名其妙格式的错误提示。

 

安装默认目录在/usr/local/trolltech/QtEmbedded-4.5.2-arm

 

打包编译安装好的QtEmbedded库文件以备以后使用:
   # tar czvf QtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm

编译ARMQT应用程序前建立环境变量:
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

 

编译简单的QT程序或者QtEmbedded-4.5.2-arm自带的程序例子挂载到开发板执行看是否成功

一般会提示找不到fonts  libQtGui.so.4  libstdc++.so.6  libQtNetwork.so.4 libQtCore.so.4 librt.so.1等库文件

/usr/local/trolltech/QtEmbedded-4.5.2-arm/lib /usr/local/arm/3.4.1/arm-linux/lib中拷贝到开发板上即可

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Qt-QML-安卓编译问题
Qt-QML-安卓编译问题
35 0
AI同传新突破:搜狗同传3.0首创「语境引擎」,PPT内容翻译正确率提高40%
这是第一款多模态人工智能语音同传产品,搜狗同传 3.0 将智能同传准确性带到了新的高度。
51 0
iOS - 3DTouch 3D 触摸
1、3DTouch 简介 3DTouch 是 iOS9 + 系统下,在 iPhone6s(iPhone6s Plus)+ 手机上才能够使用的功能。 1.1 3DTouch 基本类型 1、主屏幕快速选项(Home Screen Quick Action) 通过主屏幕的应用图标,通过 3D 手势呼出一个菜单,在主屏幕上的应用 Icon 处,直接进入应用的相应功能模块。
838 0
CTP多点触摸协议【转】
转自:http://blog.chinaunix.net/uid-26403844-id-5063920.html linux kernel 2.6.30开始对多点触摸支持,最近高通要求所有CTP器件要用B 协议上报数据,协议A/B(slot)分析如下: 一、文档 多点触摸协议文档  kernel/Documentation/input/multi-touch-protocol.txt 二、协议分析 基于硬件的能力,触摸协议分为两种类型: type A: 只能处理匿名接触,描述了如何把所有原始触摸数据发给接收者。
743 0
- C#编程大幅提高OUTLOOK的邮件搜索能力!
原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题成了一件非常紧迫的事情.
1180 0
QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1、 优良的跨平台特性(支持Win、Linux、Mac 不同的平台下只需重新编译即可使用) 2、 面向对象 3、 丰富的API 4、 支持2D/3D图形渲染,支持OpenGL 5、 大量的开发文档(无需像VC一样装几个G的MSDN) 6、 XML支持 其实,仅仅是第一点,就足以让我从VC转向QT。
1320 0
Android移植4.0后 触摸屏无法使用解决方案
 原因是因为TOUCHSCREEN的驱动没有成功的配置 第一步 方法1.   在编译make rk2926_v86_defconfig时,rk2926_v86_defconfig位于\kernel\arch\arm\configs中,在里面写了各种驱动的配置。
902 0
QTE移植成功后的交叉编译
qte终于移植成功,但是在交叉编译自己写的程序是总是提示有错误,错误如下:In file included from main.cpp:3: ./database.
1066 0
+关注
长空翱翔
长期从事Windows和linux应用程序开发,系统开发,驱动程序开发以及基于.net平台的软件开发;擅长面向对象程序设计、数据库设计、应用与开发;
938
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载