QT移植多点触控
注:本方法只在S5P4418平臺,Qt版本:5.4.1?編譯器:arm-cortex_a9-linux-gnueabi-gcc-4.7.4下試驗成功,其他平臺未做測試,不同的qt和工具鏈版本之間會有一定的差異。
前提是觸摸屏的硬件及驅動是支持多點觸摸的(evtest程序測試)。
1、編譯之前準備
2、編譯tslib-mt.tar.gz
解壓縮文件:tar -xvf? ?tslib-mt.tar.gz
./autogen-clean.sh ./autogen.sh ./configure --host=arm-cortex_a9-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-cortex_a9-linux-gnueabi.cache --prefix=/usr/local/tslib_mt make make install運行結果如下圖所示,說明編譯安裝成功:
查看安裝目錄?/usr/local/tslib_mt 是否安裝成功。
3、編譯mtdev-1.1.5?
解壓縮 tar -xvf mtdev-1.1.5.tar.gz
./autogen.sh ./configure --prefix=/usr/local/mtdev --host=arm-linux CC=arm-cortex_a9-linux-gnueabi-gcc make clean make make install運行結果如下圖所示,說明編譯安裝成功:
查看/usr/local/mtdev 目錄是否存在。如若存在說明安裝成功。
4、編譯Qt5.41源碼
編譯qt時間比較長,大概在2個小時左右,根據個人機器配置而定。
解壓縮源碼文件
tar -xvf??tar -xvf qt-everywhere-opensource-src-5.4.1.tar.gz?
export PKG_CONFIG_PATH=/usr/local/tslib/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH export TSLIB_ROOT=/usr/local/tslib export PKG_CONFIG_SYSROOT_DIR=/ export PKG_CONFIG_LIBDIR=/usr/local/mtdev/lib/pkgconfig export PKG_CONFIG_LIB=/usr/local/mtdev/lib/pkgconfig./configure \ -release \ -confirm-license \ -opensource \ -xplatform linux-arm-gnueabi-g++ \ -prefix /usr/local/qt5.4.1-A9 \ -no-c++11 \ -no-opengl \ -no-iconv \ -dbus \ -mtdev \ -make examples \ -I /usr/local/mtdev/include \ -L /usr/local/mtdev/lib -lmtdev make distclean make make install一定要上面編譯的“tslib”和“mtdev”的庫的路徑配置正確。
編譯過程中第1個錯誤:
執行? gedit??qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf?
修改為
# # qmake configuration for building with arm-linux-gnueabi-g++ #MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf)# modifications to g++.conf QMAKE_CC = arm-cortex_a9-linux-gnueabi-gcc QMAKE_CXX = arm-cortex_a9-linux-gnueabi-g++ QMAKE_LINK = arm-cortex_a9-linux-gnueabi-g++ QMAKE_LINK_SHLIB = arm-cortex_a9-linux-gnueabi-g++# modifications to linux.conf QMAKE_AR = arm-cortex_a9-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-cortex_a9-linux-gnueabi-objcopy QMAKE_NM = arm-cortex_a9-linux-gnueabi-nm -P QMAKE_STRIP = arm-cortex_a9-linux-gnueabi-strip load(qt_config)編譯過程中第2個錯誤:
執行
gedit ./qtwebkit/Source/WTF/wtf/unicode/wchar/UnicodeWchar.h? 進行修改代碼,修改為如下格式
?
大概一個小時左右,編譯完成。查看/usr/local/下是否有編譯完成的 qt5.4.1-A9文件,如若存在,說明編譯成功。
?
5、測試驗證
將生成的庫移植到開發板上面
啟動QT程序時環境配置(根據自己實際庫存在的路徑進行操作)
export LD_LIBRARY_PATH=/usr/qt/lib:$LD_LIBRARY_PATH? ? ? ? ? #配置qt庫路徑
export QT_QPA_FONTDIR=/app/fonts??????????????????????????????????????????????#配置字體路徑
export DISPLAY=:0??????????????????????????????????????????????????????????????????????????????
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/qt/plugins????#插件路徑
export QT_QPA_GENERIC_PLUGINS=EvdevTouch
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1 #觸摸屏的驅動的設備節點
將生成的Qt庫中的測試程序,將下面兩個程序拷貝至開發板中運行
/usr/local/qt5.4.1-A9/examples/touch/pinchzoom/pinchzoom??? //放大縮小
/usr/local/qt5.4.1-A9//examples/touch/fingerpaint/fingerpaint???? //多個手指同時劃線
總結
- 上一篇: 【redis】docker启动redis
- 下一篇: c语言万花筒,C/C++——元胞自动机万