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移植過程記錄