Qt5.2.1交叉編譯,帶tslib外掛
一: 原始碼下載地址:
1.1: 平臺:
主機:ubuntu 14.04
開發板: cpu arm-cortex-a8,故而我在配置我的qmake.conf的時候填寫的為armV7-a
QT版本: qt everywhere opensource 5.2.1
Busybox版本:busybox-1.22.0
arm交叉編譯工具:arm-none-linux-gnueabi 4.8.1
1.2: 交叉編譯工具:
版本: arm-none-linux-gnueabi 4.8.1
附上我用的交叉編譯工具,我把他上傳到csdn是為了備份.由於我的賬號在csdn的限制為60M,故而我將檔案分為了8份.由於寫這篇文章的時候上傳的資料智慧看見第八份,故而這裡只有這麼一個連結.
http://download.csdn.net/detail/mkndg/7374909
1.3: Qt5.2.1下載地址:
http://download.qt-project.org/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz
1.4: tslib1.4下載地址:
http://download.csdn.net/detail/MKNDG/3291565
二: 交叉編譯
步驟如下:
1:安裝交叉編譯工具
1.1: 將下載的交叉編譯工具解壓(用sudo解壓),得到一個arm-4.8.1的資料夾,將其移動到/usr/local下面去
1.2: 新增全域性環境變數:
vim /etc/bash.bashrc,在此檔案的最後寫上這一句:
- export PATH=/usr/local/arm-4.8.1/bin:$PATH
2:交叉編譯tslib1.4
2.1:解壓tslib1.4並進入其中,編寫配置檔案
- vim configTslib14.sh
- #!/bin/sh
- make clean && make distclean
-
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
- CC=/usr/local/arm-4.8.1/bin/arm-linux-gcc ./configure --host=arm-linux --prefix=/usr/local/tslib1.4 --cache-file=arm-linux.cache
- make && make install
- chmod a+x configTslib14.sh && sudo ./configTslib14.sh
3:解壓qteverywhere包:
- tar -xvf qt-everywhere-opensource-src-5.2.1.tar.gz && cd qt-everywhere-opensource-src-5.2.1
3.1:編寫configure檔案:
vim 或者
- gedit configInstallQt5.2.1.sh
根據需要在裡面寫入需要的configure內容,我的配置如下:
- ./configure -prefix /usr/local/qt-5.2.1-embedded-arm-linux -release -opensource -qt-libpng -qt-libjpeg -plugin-sql-sqlite -widgets -qt-sql-sqlite -make libs -no-cups -no-nis -no-iconv -no-dbus -no-openssl -no-iconv -no-accessibility -no-javascript-jit -no-sse2 -silent -xplatform linux-arm-gnueabi-g++ -nomake tools -nomake examples -nomake tests -qt-freetype -no-glib -strip -linuxfb -plugindir /usr/local/qt-5.2.1-embedded-arm-linux/plugins -I/usr/local/tslib1.4/include -L/usr/local/tslib1.4/lib -confirm-license "[email protected]" -verbose
- vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
我的此檔案配置如下:
- MAKEFILE_GENERATOR = UNIX
- CONFIG += incremental gdb_dwarf_index
- QMAKE_INCREMENTAL_STYLE = sublib
- QT_QPA_DEFAULT_PLATFORM = linuxfb
- QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
- QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
- include(../common/linux.conf)
- include(../common/gcc-base-unix.conf)
- include(../common/g++-unix.conf)
- QMAKE_INCDIR += /usr/local/tslib1.4/include
- QMAKE_LIBDIR += /usr/local/tslib1.4/lib
- QMAKE_CC = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc -lts
- QMAKE_CXX = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts
- QMAKE_LINK = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts
- QMAKE_LINK_SHLIB = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts
- QMAKE_AR = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-ar cqs
- QMAKE_OBJCOPY = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-objcopy
- QMAKE_NM = /usr/local/arm-4.8.1/bin/arm-linux-gnueabi-nm -P
- QMAKE_STRIP = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-strip
- load(qt_config)
執行:
- chmod a+x configInstallQt5.2.1.sh && sudo ./configInstallQt5.2.1.sh && sudo make -j 8 && sudo make install -j 8
- vim tslibPluginInstall.sh
- sudo cp qt-everywhere-opensource-src-5.2.1/qtbase/bin/qmake /usr/bin/qmake_emb_5.2.1
- cd qt-everywhere-opensource-src-5.2.1/qtbase/src/plugins/generic/tslib/
- sudo cp /usr/local/tslib1.4/include/tslib.h ./
- qmake_emb_5.2.1
- sudo make && sudo make install
- chmod a+x tslibPluginInstall.sh && sudo ./tslibPluginInstall.sh
三:將編譯好的qt庫以及tslib庫移植到檔案系統中並寫好配置檔案
根據需要將qt下面的庫拷貝到檔案系統,包括qt安裝目錄下面的plugins資料夾
- vim qtAndTsInstall.sh
- #!/bin/sh
- QTPATH=/usr/local/qt-5.2.1-embedded-arm-linux
- TSLIBPATH=/usr/local/tslib1.4
- NFSROOTPATH=~/nfsroot
- rm -rf $NFSROOTPATH$QTPATH/fonts
- cp ./fonts $NFSROOTPATH$QTPATH/ -arf
- sudo cp $QTPATH/lib/* $NFSROOTPATH$QTPATH/ -arf
- sudo cp $TSLIBPATH $NFSROOTPATH/ -arf
- rm -rf $NFSROOTPATH$QTPATH/*.la $NFSROOTPATH$QTPATH/*.prl
- sudo cp $QTPATH/plugins $NFSROOTPATH$QTPATH/ -arf
- chmod a+x qtAndTsInstall.sh && sudo ./qtAndTsInstall.sh
- vim ~/nfsroot/etc/profile
- export QTDIR=/usr/local/qt-5.2.1-embedded-arm-linux
- export PATH=$QTDIR:$PATH
- export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
- export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
- export QT_QPA_FONTDIR=$QTDIR/fonts
- export TSLIB_ROOT=/usr/local/tslib1.4
- export TSLIB_CALIBFILE=/etc/pointercal
- export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
- export TSLIB_FBDEVICE=/dev/fb0
- export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
- export TSLIB_CONSOLEDEVICE=none
- export TSLIB_TSDEVICE=/dev/touchscreen
- export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
- export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE
- export set QWS_DISPLAY=LinuxFb:/dev/fb0
- export set QWS_SIZE=640x480
- export set QT_QWS_FONTDIR=$QTDIR/fonts/
- export set LD_LIBRARY_PATH=$QTDIR:$QT_QPA_PLATFORM_PLUGIN_PATH:$QT_QPA_FONTDIR:$TSLIB_ROOT/lib:$TSLIB_PLUGINDIR:$LD_LIBRARY_PATH
執行的時候直接執行,例如: ./test