Qt tslib 交叉编译
- 格式:docx
- 大小:10.85 KB
- 文档页数:1
交叉编译QT5后触摸屏TSLIB的问题QT5.2,UBUNTU,在arm-linux-gcc 4.4.1(EABI)下编译。
TSLIB为1.4,目标板CPU为S3C2440编译过程:修改qtbase/mkspecs/linux-arm-gnueabi-g++下的qmake.conf 里的路径, 并添加:QT_QPA_DEFAULT_PLATFORM = linuxfbQMAKE_CFLAGS_RELEASE += -O2 -march=armv4tQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv4t之后./configure -xplatform linux-arm-gnueabi-g++ -release -opensource -confirm-license -make libs --prefix $PWD/_install -no-c++11用生成的QMAKE在qtbase/src/plugins/genric/tls里面,qmake -o Makefile tslib.pro,make && make install编译结果运行QT应用时,提示:QTsLibMouseHandler "tslib" "/dev/input/event0"Couldnt load module pthresError configuring: No such file or directory触屏不能用,鼠标不能用。
提示This plugin does not support propagateSizeHints(),窗口无标题栏。
求救~~~~~附:环境变量设置export TSLIB_ROOT=/usr/localexport TSLIB_TSDEVICE=/dev/input/event0export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.confexport TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexport TSLIB_FBDEVICE=/dev/fb0export TSLIB_CONSOLEDEVICE=noneexportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib export QTDIR=/opt/QT5_2export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/libexportPATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin:$QTDIR/bin export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins #:/usr/local/lib/tsexport QT_QPA_PLATFORM=linuxfb:tty=/dev/tty0export QT_QPA_FONTDIR=$QTDIR/lib/fontsexport LD_PRELOAD=$QTDIR/lib/preloadable_libiconv.soexport QT_QPA_GENERIC_PLUGINS=tslib:/dev/event0。
qtvirtualkeyboard 交叉编译随着移动设备的普及和使用,虚拟键盘成为了一个重要的输入方式。
Qt作为一种跨评台的应用程序开发框架,自然也提供了虚拟键盘的组件 qtvirtualkeyboard。
在进行移动设备应用程序的开发时,可能会遇到需要在不同评台上进行交叉编译的情况。
本文将介绍如何进行qtvirtualkeyboard的交叉编译,以在不同评台上使用虚拟键盘。
1. 确定目标评台和环境在进行qtvirtualkeyboard的交叉编译之前,首先需要确定目标评台和编译环境。
不同的评台和环境可能需要采用不同的编译方式和工具链。
如果我们需要在Android评台上使用qtvirtualkeyboard,就需要使用Android NDK和对应的交叉编译工具链。
2. 配置交叉编译工具链一般来说,进行交叉编译需要配置对应的交叉编译工具链。
这个工具链需要包含能够针对目标评台进行编译和信息的工具和库。
我们可以根据目标评台和环境的要求,下载对应的交叉编译工具链,并进行配置。
在配置好工具链之后,我们就可以使用这个工具链来进行对应评台上的编译工作。
3. 下载和编译qtvirtualkeyboard源码一般来说,qtvirtualkeyboard的源码可以从Qt的冠方全球信息站上下载到。
在下载了源码之后,我们将其解压并进入源码目录。
我们可以根据目标评台和环境的要求,选择合适的编译选项和参数,并使用之前配置好的交叉编译工具链进行编译。
在编译过程中可能会遇到一些依赖库或者头文件的缺失,我们需要根据具体情况进行补充和配置。
4. 集成和部署虚拟键盘组件编译完成后,我们将得到对应评台上的qtvirtualkeyboard组件。
这个组件可以包括一些库文件、头文件和其他必要的资源。
我们需要将这些组件集成到我们的应用程序中,并进行相应的部署。
在集成和部署过程中,可能会遇到一些路径配置和信息依赖的问题,我们需要进行相应的调整和处理。
现在市场上很多嵌入市播放器都是基于Linux 平台 + Mplayer + QT GUI 的组合,开发者可以很方便的开发出界面美观的播放器。
本文就以自己写的一个GUI 界面+Linux 平台 + QT4.5.3 作为内容分析具体的的移植过程:在移植之前你必须保证你的开发板子能征程工作,并且是基本与NFS 的文件系统引导。
关于怎么利用NFS 来启动ARM板子,请见其他博文:1.安装交叉编译环境:arm-linux-gcc-4.3.2.tar.bz2A: 下载地址:B: 将gcc解压到系统根目录tar xvjf arm-linux-gcc-4.3.2.tar.bz2 -C /-C / 表示解压在根目录下成功后将会安装在/usr/local/arm/4.3.2目录下C: 将gcc的所在路径加入用户的环境路径D: 修改用户目录下的 .bash_profile文件,将交叉编译工具的路径加到该文件中PATH=/usr/local/arm/4.3.2/bin:$PATH:$HOME/binE: 保存.bash_profile 后执行ldconfig 命令让其同步执行: which arm-linux-gcc 如果看到下面的提示表示你安装好了/usr/local/arm/4.3.2/bin/arm-linux-gcc或者执行: arm-linux-gcc -v 后能看到一下内容表示安装成功Using built-in specs. Target: arm-none-linux-gnueabiConfigured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap--disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++--enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3..........................................gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)2.安装QT-x11和QT-EmbeddedA :从Nokia的官方网站上下载 QT-Creator2.0 集成开发环境和QT-Embedded包:a: qt-sdk-linux-x86-opensource-2009.05.binb: qt-embedded-linux-opensource-src-4.5.3.tar.gzB: 安装QT-x11进入到你下载的目录在控制台下输入: ./qt-sdk-linux-x86-opensource-2009.05.bin 回车后,就执行安装了,后面的安装和Windows安装一样只要用鼠标点击下一步就可以了。
Qt4.5.1触摸屏+tslib1.4移植全记录Qt4.5.1触摸屏+sqlite3 移植全记录主机系统:Debian 5.0主机编译器:gcc/g++为4.1.3交叉编译器:arm-linux-gcc/g++3.4.5-glibc-2.3.6软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gzqt-x11-opensource-src-4.5.1.tar.gztslib-1.4.tar.gz目标板:博创UP-TECH S24101. 安装X11的相关库文件和开发包在编译时会生成一些在主机上运行的工具,要用到X11的一些头文件、库,所以需要安装X11开发包。
#sudo apt-get -y install x-dev libx11-dev xlibs-static-dev x11proto-xext-dev libxext-dev libqt3-mt-dev#sudo mkdir -p /usr/X11R6/include#sudo cp -rf /usr/include/X11 /usr/X11R6/include(参考韦东山《嵌入式Linux应用开发完全手册》)2.安装交叉编译器arm-linux-gcc-3.4.5(1) 新建安装目录:#mkdir /usr/local/arm(2) 解压arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2把arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2复制在目录/usr/local/arm下,在终端中进行如下操作:#cd /usr/local/arm#tar jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2等待解压完成。
(3) 导入环境变量export PATH=$PATH:/usr/local/arm/3.4.5/bin或者:编辑一个导入环境变量的脚本(方便以后使用):#vi ArmEnv1 #!/bin/sh2 export PATH=$PATH:/usr/local/arm/3.4.5/bin#chmod +x ArmEnv //增加可执行权限#arm-linux-gcc -v这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/3.4.5/bin:$PATH”(不推荐这种方式)。
[转]qt-4.7交叉编译-mikit的专栏-CSDN博客[转]qt-4.7交叉编译收藏一:环境介绍虚拟机:vmware 7.0Linux 环境:ubuntu 9.04交叉编译环境:arm-linux-g++ 3.4.5硬件平台:TQ2440二:移植步骤安装交叉编译环境由于这里使用的是QT2440管盘中提供的交叉编译工具链EABI-4.3.3_EmbedSky_20100610.tar.bz2,放在/opt/目录下解压主要是在解压后可以看到其中含有两个版本,由于qt4.7.0的编译必须使用3.4.5版本所以在设置交叉编译的路径的时候使用的是在/etc/profile中加入exportPATH=/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:$PATH安装tslib1.41. 下载tslib1.4,解压2. 进入解压的目录运行执行./autogen.sh3. 执行./configure --prefix=/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes ,经过一段时间的编译4. 执行make install5. 修改/opt/tslib/etc/ts.conf,把第二行的#号去掉(这样做的主要目的是为了在移植到板子上的时候,可以制定输入模块)6. 在/etc/profile中加入export PATH=/opt/tslib:$PATHPS:经过我的测试,我无法用以上的方法编译tslib1.4,我用的是另外一种方法:1、 ./autogen.sh #用于生成configure脚本2、 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache#产生一个cache文件arm-linux.cache,欺骗configure,3、 CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/opt/tslib --cache-file=arm-linux.cache4、 make5、 make install交叉成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹编译qt4.7.0-arm1. 下载qt-everwhere-opensource-4.7.0,并解压最好重命名qt-everwhere-opensource-4.7.0-qte2. 开始进行配置选项./configure -embedded arm -release -opensource -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg -no-libmng -no-libtiff -no-multimedia -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-linuxinput -no-glib -qt-mouse-tslib -I /opt/tslib/include -L /opt/tslib/lib -confirm-license "$@"3. 开始进行交叉编译gmake 此过程要经历很长的一段时间4. 在交叉编译成功后运行gmake install安装,这里会默认安装到/usr/local/Trolltech/QtEmbedded-4.7.0-arm5. 这个时候qte的编译就成功了制作根文件系统(移植到开发板)1.移植tslib,将ubuntu中的/opt/tslib 拷贝到根文件系统中的/opt/下面2.移植qte4.7.0将/usr/local/Trolltech/QtEmbedded-4.7.0-arm下面的lib文件夹拷贝到根文件中的相同目录下(必需得先创建相应的目录)注:此时可以根据需要裁剪lib 中的内容去掉不用的.so文件3. 增加新的显示中文的字体wenquanyi 放到上面的/lib/fonts目录下。
移植所遇到的问题分析与总结(elephant半原创)一:移植环境1:主机环境:Ret Hat Enterprise 52: 交叉工具链:开发平台:友善之臂mini2440+统宝寸屏4:所需的软件资源:(QT的移植是参考网上找到一篇较好的移植手册,但是此手册的作者不知道是无心之失还是咋的,给的资料有所保留。
不过思路比较清晰以及解析的比较详细,还是非常值得参考的)参照的文章链接地址为:二:交叉编译在移植好触摸屏的驱动后(在移植内核的时候完成),一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。
我移植到开发板的QT版本是QT4,所以用进行触摸屏校正,因为QT4只是支持(目前最新版),QT2支持的是版本,所以在移植过程中先要看清楚自己移植的是什么版本。
简单描述tslib校正触摸屏原理:Tslib是触摸屏驱动和应用层之间的适配层,它从触摸屏驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
通过tslib/src/文件可以看出,在tslib中为应用层提供了2个主要的接口ts_open(),ts_close();ts_read()和ts_read_raw(),其中ts_read()为正常情况下的接口,ts_read_raw()为校准情况下使用的接口。
从tslib默认的文件中可以看出包括如下基本插件:(强烈建议通读这个配置文件并理解这个文件所写的内容)pthres 为Tslib 提供的触摸屏灵敏度门槛插件;variance 为Tslib提供的触摸屏滤波算法插件;dejitter 为Tslib 提供的触摸屏去噪算法插件;linear为Tslib 提供的触摸屏坐标变换插件。
tslib 从触摸屏驱动采样到的设备坐标进行处理再提供给应用端的过程大体如下: raw device --> variance --> dejitter --> linear --> applicationmodule module module module再来看看ts_calibrate主要做了哪些事情,校准情况下,tslib对驱动采样到的数据进行处理的一般过程如下:1。
Fedora下Qt环境搭建基于VMware7.1.4上的Fedora 14操作系统tslib-1.4.tar.gzarm-linux-gcc-4.3.2.tar.gzqt-everywhere-opensource-src-4.7.4.tar.gz二.安装交叉编译环境:把arm-linux-gcc-4.3.2.tar.gz放到/tmp 目录下# tar xzvf arm-linux-gcc-4.3.2.tar.gz -C /# vim /root/.bashrc编辑/root/.bashrc文件,在最后一行添加:export PATH=$PATH:/usr/local/arm/4.3.2/bin保存退出后回到终端,然后使得刚才添加的环境变量生效:# source /root/.bashrc# arm-linux-gcc -v 可以看到版本信息五.安装Qt for PC(X11)1.1、建立目录Qt目录mkdir /opt/FriendlyARM/mini2440/Qt1.2、解压qt-everywhere-opensource-src-4.7.4.tar.gz 并更改目录名tar xvzf qt-everywhere-opensource-src-4.7.4.tar.gz -C /opt/FriendlyARM/mini2440/Qtcd /opt/FriendlyARM/mini2440/Qtmv qt-everywhere-opensource-src-4.7.4 qt-for-x111.3、开始配置文件:# cd qt-for-x11#. /configure接着提示要使用商业版还是开源版:输入o后回车选择开源版;然后提示可以使用开源协议:输入yes后回车即可。
1.4、#gmake //编译,这个过程要等几个小时的时间1.5、#gmake install //开始安装基于PC上的Qt1.6、安装目录在新生成的目录下面:/usr/local/Trolltech/Qt-4.7.4 1.7、使用时需添加#export PATH=”/usr/local/Trolltech/Qt-4.7.1/bin:$PATH”然后输入#qmake –v (如能输出版本号,则说明安装成功)1.8、编译qvfb(Virtual Framebuffer) 为QT-embedded X86 作准备1.8.1、# cd /opt/FriendlyARM/mini2440/Qt/qt-for-x11/tools/qvfb1.8.2、# gmake (编译后qvfb存在/opt/FriendlyARM/mini2440/Qt /qt-for-x11/bin目录中)1.8.3、# cd /opt/FriendlyARM/mini2440/Qt /qt-for-x11/bin/1.8.4、# ./qvfb (进行检验,如能输出一个虚拟窗口,则说明安装正常)1.8.4、将qvfb拷贝到QTDIR/bin路径下:cp qvfb /usr/local/Trolltech/Qt-4.7.4/bin六.安装QT for Embedded for X86 嵌入式X861.1、解压qt-everywhere-opensource-src-4.7.4.tar.gz 并更改目录名tar xvzf qt-everywhere-opensource-src-4.7.4.tar.gz -C /opt/FriendlyARM/mini2440/Qtcd /opt/FriendlyARM/mini2440/Qtmv qt-everywhere-opensource-src-4.7.4 qt-for-x861.2、进入对应文件夹并配置#cd /opt/FriendlyARM/mini2440/Qt/qt-for-x86#./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb //配置接着提示要使用商业版还是开源版:输入o后回车选择开源版;然后提示可以使用开源协议:输入yes后回车即可。
qt程序移植到arm开发板1、安装交叉编译⼯具链arm-linux-gcc●复制arm-linux-gcc-4.4.3.tar.gz到/home/tools⽂件夹⾥●解压命令tar xvzf arm-linux-gcc-4.4.3.tar.gz -C / (解压⽂件到根⽬录下)注意以上命令必须要有-C⽽且是⼤写,后边有个空格也要注意。
注意查看解压的路径,将解压⽣成的⽂件移动到usr/local/arm⽬录下●vi /etc/profile●在⽂件的末尾加上PATH=/usr/local/arm/4.4.3/bin:$PATH●输⼊命令:source /etc/profile(使刚修改的⽂件⽴即⽣效)●查看arm-linux-gcc版本arm-linux-gcc -v注意:此⽅法只对当前登录⽤户有效,更换⽤户后修改当前登录⽤户/etc/profile即可2、tslib编译与安装tslib是电阻式触摸屏⽤于校准的⼀个软件库,是⼀个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应⽤提供了⼀个统⼀的接⼝。
因此这⾥先编译安装tslib,这样在后⾯编译Qt的时候才能打包编译进去。
●需要检查⼀下软件是否安装sudo apt-get install automakesudo apt-get install autogensudo apt-get install autoconf●确定以上⼯具都已经安装后,复制tslib-1.4.tar到/home/tools⽂件夹⾥tar -zxvf tslib-1.4.tar.gzcd tslib./autogen.sh./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/usr/local/tslibmakemake install-prefix=/usr/local/tslib是指定安装路径,其实包括下⽂的安装配置,路径都可以不指定,默认就是安装到/usr/local/⽬录下若出现错误:configure.ac:25: error: possibly undefined macro: AC_DISABLE_STAT ICIf this token and others are legitimate, please use m4_pattern_al low.See the Autoconf documentation.configure.ac:26: error: possibly undefined macro: AC_ENABLE_SHARE Dconfigure.ac:27: error: possibly undefined macro: AC_LIBTOOL_DLOP ENconfigure.ac:28: error: possibly undefined macro: AC_PROG_LIBTOOL autoreconf: /usr/bin/autoconf failed with exit status: 1解决⽅法:apt-get install libtool3、Qt的交叉编译与安装和PC平台下的编译类似,通过运⾏./configure进⾏配置⽣成makefile⽂件,然后编译安装,只是因为是针对嵌⼊式平台需要进⾏⼀些针对性配置,这⾥⽣成⼀个⾃动配置⽂件,可以通过修改⽂件来⽅便的更改配置。
Qt-embedded-free-3.3.8在qt2410上的移植步骤准备好需要的安装包:arm-linux-cross-2.95.3.tar.bz2qt-embedded-free-3.3.8.tar.bz2qt-x11-free-3.3.8.tar.bz2qtopia-free-1.7.0.tar.gz在home下建个自己的目录我的是renyc,然后分别建立x86和arm平台开发目录,命令如下:[root@localhost root]# cd /home/renyc[root@localhost root]# mkdir qtarm[root@localhost root]# mkdir qtx86然后把上述3个安装包分别拷到qtarm和qtx86目录下。
[root@localhost root]#cp qt-embedded-free-3.3.8.tar.bz2 /qtx86[root@localhost root]#cp qt-x11-free-3.3.8.tar.bz2 /qtx86[root@localhost root]#cp qtopia-free-1.7.0.tar.gz /qtx86[root@localhost root]#cp qt-embedded-free-3.3.8.tar.bz2 /qtarm[root@localhost root]#cp qt-x11-free-3.3.8.tar.bz2 /qtarm[root@localhost root]#cp qtopia-free-1.7.0.tar.gz /qtarm1、PC机搭建开发环境第一步:首先安装交叉编译器把arm-linux-cross-2.95.3.tar.bz2拷到/home/renyc目录下,解压到usr/local/arm/下,这是arm-linux-gcc安装的默认路径,不按这个路径安装可能会有问题,然后执行如下命令:[root@localhost root]#tar xfvz arm-linux-cross-2.95.3.tar.bz2 –C /注意:-C后面有个空格,并且C是大写的,他是”Change”的第一个字母。