tslib 1.4 qt4.8.6移植过程记录
Posted saye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tslib 1.4 qt4.8.6移植过程记录相关的知识,希望对你有一定的参考价值。
工作原因需要把原JAVA界面移植成QT界面,触摸驱动这个坑填了好久,今天终于搞定了,也怪自己经验不足吧。记录一下忘了以后还可以看看,设置的环境变量都是机器上的,如果需要使用得改改
下载tslib1.4,安装相应要用到的工具
sudo apt-get install automake
sudo apt-get install autogen
sudo apt-get install autocon
# tar -zxvf tslib-1.4.tar.gz
# cd tslib
# ./autogen.sh
./configure --host=arm-none-linux-gnueabi --cache-file=arm-linux.cache --enable-inputapi=no --prefix=/opt/tslib/lib
修改/ect/ts.conf 里把module_raw input前面的删掉 顶格
config.h.in 的undef malloc 注释掉,不然编译不过
修改tslib的代码到我们系统能用的,这里不贴代码了, 主要是abs_x abs_y abs_press不匹配,修改好的见tslibxiugaidaimade.zip
# make
# make install
执行以后会在目录/opt/tslib/lib下生成4个文件夹
二.Tslib测试程序在目标机上运行的办法
打包/opt/tslib/lib的4个文件成lib.tar.gz
下载到/gendata/update/tslib/下解压
cp –r /gendata/update/tslib/lib/lib/. /lib/ (不要问我为什么要拷贝到系统库文件下o(╥﹏╥)o 设置profile下的环境变量无效啊)
配置环境变量,配置完以后要souce /etc/profile 生效
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event0 //触摸驱动输入接口
export set TSLIB_CONFFILE=/gendata/update/tslib/lib/etc/ts.conf //tslib配置文件
export set TSLIB_CALIBFILE=/etc/pointercal //屏幕校准后保存坐标的地方,这个文件是代码自己生成的,不要手贱自己创建,不然测试程序跑不起来
export set TSLIB_PLUGINDIR=/gendata/update/tslib/lib/lib/ts
export set TSLIB_CONSOLEDEVICE=none (不加这个程序运行不了,关闭控制台的意思)
cd /gendata/update/tslib/lib/bin/
chmod 777 *
/.ts_calabarate
三.QT交叉编译
tslib编译好的4个文件在/opt/tslib/lib下 ,用来进行交叉编译
配置好arm的交叉编译环境
在ubuntun里关闭原来配置好的QT的编译环境变量 ,框里面的注释掉,source 以后要重启系统,不然不生效(o(╥﹏╥)o,当然重新编译QT arm程序的时候要取消注释,不然没法make)
下载官网的qt-everywhere-opensource-src-4.8.6.tar.gz
解压
cd 到解压目录下
修改/mkspeces/linux-arm-gnueabi-g++/qmake.conf
/mkspeces/qws/linux-arm-gnueabi-g++ /qmake.conf
/mkspeces/qws/linux-arm-g++ /qmake.conf 为如下:
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
QMAKE_INCDIR +=/opt/tslib/lib/include
QMAKE_LIBDIR +=/opt/tslib/lib/lib
load(qt_config)
配置:
./configure -static -release -prefix /opt/qt/qt-4.8.6-for-arm-s -embedded arm -host-little-endian -little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-gnueabi-g++ -no-webkit -no-openssl -no-javascript-jit -no-webkit -no-qvfb -no-qt3support -qt-mouse-tslib -I/opt/tslib/lib/include -L/opt/tslib/lib/lib
下一步询问:o yes
make
make install
四.QT在目标机上运行
之前的注释取消,souce以后,重启系统
在QT应用程序加上如下代码,不然会有光标存在:
#include <QWSServer>
int main(int argc, char *argv[])
{
QApplication app(argc, argv, QApplication::GuiServer);//加入第三个参数就不用运行加入 -qws了
QWSServer::setCursorVisible(false);//这句就能让我们实现触摸屏能用而光标又不显示的功能了。
。。。。。
}
编译好后,拷贝到目标机中。
将tslib生成的/lib/下的所有文件 拷贝到/lib/下
配置/etc/profile
export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CONFFILE=/gendata/update/tslib/lib/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/gendata/update/tslib/lib/lib/ts
export set TSLIB_CONSOLEDEVICE=none
export QWS_MOUSE_PROTO=tslib:/dev/event0 //新增的,不加光标不会有,控制不了触碰,虽然在程序里要隐藏光标
export QWS_SIZE=320*240
运行时候 ./应用程序 –qws (不要加-nomouse,加了触屏会失效)
以上是关于tslib 1.4 qt4.8.6移植过程记录的主要内容,如果未能解决你的问题,请参考以下文章