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,加了触屏会失效)

猜你喜欢

转载自www.cnblogs.com/saye/p/9146280.html