往 Mini2440 開發板中移植 QT 應用程序時,須要用 QTCreater 交叉編譯代碼。而應用程序依賴於一系列的庫,這就須要編譯 ARM 版本的 QT 庫。html
1.安裝交叉編譯環境 arm-linux-gcc 並設置好環境變量。linux
2.編譯安裝與觸屏校對顯示相關的庫 tslib1.4.tar.gz,具體步驟參考 Mini2440移植qt-extended4.4.3。須要注意的是編譯時須要設置編譯鏈採用 arm-linux-g++。經過下列命令來進行指定。web
./configure--host=arm-linux --cache-file=arm-linux.cache \ PLUGIN_DIR=/usr/local/arm/tslib/plugins \ -prefix=/usr/local/arm/tslib/build -host=arm-linux --cache-file=arm-linux.cache2>&1 | tee conf_log
3.交叉編譯安裝 qt 庫 qt-everywhere-opensource-src-4.6.4.tar.gz,具體步驟參考 Qtcreator配置、交叉編譯arm程序。同時也須要設置編譯鏈採用 arm-linux-g++。經過下列命令來進行指定。ui
./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -prefix /opt/Qt4.6.4_forArm -I /usr/local/arm/tslib/tslib/include -L /usr/local/arm/tslib/tslib/lib
主要是三步:設置 QT 版本(Qt-embeded-arm 庫位置)——設置編譯器(arm-linux-g++)——設置構建套件.net
具體步驟參考 Qtcreator配置、交叉編譯arm程序nuxt
1.創建 FTP 鏈接。ftp 202.201..unix
2.切換到須要傳送文件所在目錄 lcd /home/huang/Desktop/Quantizer4ARM/build-Quantizer-ARM-Debugcode
3.傳送文件 put Quantizerorm
4.運行 QT 程序 ./Quantizer -qwshtm
主要想法是使用 FriendlyARM 的啓動腳本。修改 /bin/qt4 腳本爲下列 AppLauncher.sh,用它來啓動應用程序。
#!/bin/sh export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_CONFFILE=/usr/local/etc/ts.conf export TSLIB_PLUGINDIR=/usr/local/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export LD_LIBRARY_PATH=/ export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin export QWS_DISPLAY=:1 TS_INFO_FILE=/sys/devices/virtual/input/input0/uevent if [ -e $TS_INFO_FILE -a "/bin/grep -q TouchScreen < $TS_INFO_FILE" ]; then export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 MouseMan:/dev/input/mice" if [ ! -s /etc/pointercal ] ; then rm /etc/pointercal /usr/local/bin/ts_calibrate fi else export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice" fi unset TS_INFO_FILE export QWS_KEYBOARD=TTY:/dev/tty1 export HOME=/root cd /usr/local/Trolltech/QtEmbedded-4.6.3-arm/demos/embedded/fluidlauncher $1 -qws hotplug
使用 ./AppLauncher.sh ./Quantizer 打開 QT 應用程序。具體步驟參考 Qt在mini2440下的觸摸屏失效和庫文件找不到問題的解決。
在開發板上運行程序出現錯誤
./Quantizer: symbol lookup error: ./Quantizer: undefined symbol: _ZNK6QImage13constScanLineEi
程序讀圖片使用
const uchar *pSrc = (uchar *)image.constScanLine(i)
這是 Qt 4.8 版本中的,PC 上編譯的 QT-embedded-qt 庫是 4.8.6 版本的,而 ARM 開發板中的動態連接庫是 4.6.3 版本。
將代碼改成
uchar *pSrc = (uchar *)image.scanLine(i)
便可正常工做。