1. 程式人生 > >tslib 1.4 qt4.8.6移植過程記錄

tslib 1.4 qt4.8.6移植過程記錄

重新編譯 官網 .com main where 不顯示 接口 刪掉 etc

工作原因需要把原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移植過程記錄