淺析QT 4 移植
對于QT 4 移植,本篇文章介紹QT4移植到了mini2440的開發板上。在操作之前,首先要弄清楚一些概念:
1.什么是Qt
Qt 是一個跨平臺應用程序框架。通過使用 Qt,您可以一次性開發應用程序和用戶界面,然后將其部署到多個桌面和嵌入式操作系統,而無需重復編寫源代碼。Qt 軟件前身為 Trolltech (奇趣科技),2008年6月被諾基亞收購。
2.Qt的版本和分類
Qt 的版本是按照不同的圖形系統來劃分的,目前分為四個版本:
Win32版,適用于Windows平臺;
X11版,適合于使用了x系統的各種 linux 和 unix的平臺;
Mac版,適合與蘋果MacOS;
embedded版,適合于具有幀緩沖(frame buffer)的linux 的平臺
3.Qtopia和Qt的關系
Qt Palmtop Environment,是構建于Qt/E之上一個類似桌面系統的應用環境,包括了PDA和手機等掌上系統常見的功能如電話簿、日程表等。
Qtopai后來改名為Qt Extended,2009年3月3日,Nokia決定停止Qt Extended的后續開發,轉而全心投入Qt的產品開發,并逐步會將一部分QtExtended的功能移植到Qt開發框架中。
qt-4.5.3的編譯與移植:
在PC的linux系統中開發qt程序,完全可以下載完整的SDK, Qt SDK for Linux/X11 32-bit** (370 Mb),包含QT庫,Qt Creator和qt的其他開發工具。下載后直接安裝即可。
所以,主要的工作是編譯在ARM板上運行的qt庫:下載qt-embedded-linux-opensource-src-4.5.3.tar.gz,tslib-1.4.tar.gz
1.首先編譯安裝觸摸屏驅動庫tslib-1.4
- view sourceprint?1
- ./autogen.sh
- ./configure --prefix=/usr/local/qte-arm/tslib-1.4 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
- make
- sudo make install
這樣就可以在/usr/local/qte-arm/tslib-1.4目錄下看到相關的應用程序、共享庫、配置文件等,這些庫和配置文件都是要拷到ARM板的根文件系統中的。
2.編譯qt-embedded-linux-opensource-src-4.5.3
- view sourceprint?01 ./configure -prefix /usr/local/qte-arm \
- -no-qt3support \
- -qt-zlib \
- -qt-libtiff \
- -qt-libpng \
- -qt-libmng \
- -qt-libjpeg \
- -make libs \
- -nomake examples \(不編譯例子程序和文檔)
- -nomake demos \
- -nomake docs \
- -no-nis \
- -no-cups \
- -no-iconv \
- -xplatform qws/linux-arm-g++ \
- -embedded arm \
- -little-endian \
- -qt-freetype \
- -depths 8,16,24,32 \
- -qt-gfx-linuxfb \
- -no-gfx-transformed \
- -no-gfx-qvfb \
- -no-gfx-vnc \
- -no-gfx-multiscreen \
- -qt-kbd-usb \
- -qt-kbd-tty \
- -qt-mouse-pc \
- -no-glib \
- -qt-mouse-tslib -I/usr/local/qte-arm/tslib/build/include -L/usr/local/qte-arm/tslib/build/lib
編譯選項-qt-mouse-tslib需要用到觸摸屏功能的動態庫,所以得把之前編譯安裝的tslib庫包含進來。
- make
- make install
這樣qt/E的編譯工作完成,主要是得到了qt程序在arm板上運行所需要的庫文件,以及用于arm平臺的qmake,moc,uic等工具。
3.拷貝相關文件到ARM根文件系統
拷貝/usr/local/qte-arm/tslib整個目錄到arm板根文件系統root_nfs/下;
拷貝/usr/local/qte-arm/lib/下所有庫文件到root_nfs/opt/qt/lib目錄下,你可能不需要全部的庫文件,可根據需要選擇;
4.設置環境變量和配置文件
首先設置tslib的配置文件 gedit root_nfs/tslib/build/etc/ts.conf
- view sourceprint?1 module_raw input
- module pthres pmin=1
- module variance delta=30
- module dejitter delta=100
- module linear
然后設置qt及tslib的環境變量: gedit root_nfs/etc/profile
在最后加入:
- view sourceprint?01 export QTDIR=/opt/qt
- export T_ROOT=/tslib/build
- export PATH=$T_ROOT/bin:$PATH
- export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
- export TSLIB_CONSOLEDEVICE=none
- export TSLIB_FBDEVICE=/dev/fb0
- export TSLIB_TSDEVICE=/dev/input/event0
- export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
- export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
- export TSLIB_CALIBFILE=/etc/pointercal
- export QWS_KEYBOARD=USB:/dev/input/event1
- export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
- export QWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0
- export QWS_SIZE=240x320
重啟開發板,移植完成!注意,在開發板上運行qt程序要加-qws 選項,從而讓程序以Server模式運行。
【編輯推薦】