ARM QT移植詳細步驟教程
阿新 • • 發佈:2019-01-07
米爾SAM9X5和A5D3X上預設的Qt版本是4.5.3,當這個版本的Qt庫不能滿足實際開發需求時,可通過此方法制定Qt開發、執行環境。
移植的步驟如下:
1、下載新版qt;
2、編譯tslib;
3、編譯qt;
4、配置編譯後的qt,以便在主機上用qmake編譯適用目標板的qt應用;
5、拷貝lib檔案到目標板。
一、下載qt和tslib
比如要安裝4.8.5版本,則下載 qt-everywhere-opensource-src-4.8.5.tar.gz,
米爾百度雲下載(建議!~):http://pan.baidu.com/s/1i3j5cyT
官網下載地址:http://download.qt-project.org/archive/qt/ 。
還要下載tslib,
米爾百度雲盤下載,地址(建議!~):http://pan.baidu.com/s/1fF8gI
官方下載地址:https://github.com/kergoth/tslib;
二、編譯tslib
1、 建立工作目錄
2、編譯安裝tslib
將下載的tslib原始碼複製到工作目錄,並解壓:
3、配置環境
先安裝automake、libtool 兩個工具:
4、編譯
配置tslib,安裝路徑可以通過 --prefix 引數設定,這裡安裝到/usr/local/tslib:
編譯安裝:
完成後,tslib會按安裝到/usr/local/tslib目錄下。
進入下一步之前,先將/usr/local/tslib/etc/ts.conf檔案第二行“#module_raw input”註釋去掉,變為“module_raw input”,注意一定要頂格。
三、編譯安裝qt
1、解壓
開啟解壓目錄下的mkspecs/qws/linux-arm-g++/qmake.conf:
用vi開啟qmake.conf 後,將arm-linux-全部替換arm-linux-gnueabihf-(注意:根據自己板子而定,並且一定要先將交叉編譯器的路徑加入PATH變數中),並加上-lts,然後儲存退出,更改後如下:
3、配置Qt
如下,先通過 --prefix 指定qt安裝的路徑,-I後面指定上一步tslib的include路徑,-L後面指定上一步tslib的lib路徑,
可以執行./configure --help檢視引數的詳細說明,根據需要來配置合適的引數
如果配置的時候提示:
說明找不到合適的交叉編譯工具,請重新設定PATH環境變數。如果還是不能解決,再修改mkspecs/qws/linux-arm-g++/qmake.conf,將交叉編譯工具改為絕對路徑,如下:
4、 編譯安裝
完成後,qt4.8.5即會安裝到主機/usr/local/qt4.8.5-arm目錄下。
四、配置編譯後的qt,以便在主機上用qmake編譯嵌入式qt應用
1、設定環境變數
在主機(如Ubuntu)當前終端下執行以下命令:
或將以上命令新增到/etc/profile 檔案中,這樣系統登入時就自動設定好這些環境變數。
五、移植Qt到開發板
開發板上要使用的東西就2個,一個是編譯後的tslib,一個是編譯後qt目錄下的lib目錄。如下步驟將這兩個目錄拷貝到開發板上。
1、打包lib
我們Qt 安裝完成之後,為解決符號連結的問題,可以利用先打包,然後直接解壓到開發板的做法:
將打包好的壓縮檔案 lib.tar.gz 和 tslib.tar.gz 複製到開發板,然後解壓:
2、設定開發板上的環境變數
在目標板上新建一個名為setqtenv的檔案,
並加入以下內容:
執行以下命令設定好qt環境變數的設定:
移植的步驟如下:
1、下載新版qt;
2、編譯tslib;
3、編譯qt;
4、配置編譯後的qt,以便在主機上用qmake編譯適用目標板的qt應用;
5、拷貝lib檔案到目標板。
一、下載qt和tslib
比如要安裝4.8.5版本,則下載 qt-everywhere-opensource-src-4.8.5.tar.gz,
米爾百度雲下載(建議!~):http://pan.baidu.com/s/1i3j5cyT
官網下載地址:http://download.qt-project.org/archive/qt/
還要下載tslib,
米爾百度雲盤下載,地址(建議!~):http://pan.baidu.com/s/1fF8gI
官方下載地址:https://github.com/kergoth/tslib;
二、編譯tslib
1、 建立工作目錄
-
$ cd ~$ sudo make /usr/local/tslib
-
$ sudo make /usr/local/qt4.8.5-arm
-
$ mkdir qt-arm
- $ cd qt-arm
2、編譯安裝tslib
將下載的tslib原始碼複製到工作目錄,並解壓:
-
$ cp tslib-1.4.tar.gz ./
-
$ tar xzvf tslib1.4.tar.gz
- $ cd tslib
3、配置環境
先安裝automake、libtool 兩個工具:
- $ sudo apt-get install automake libtool
- $ export PATH=$PATH:/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-2010415_linux/bin
4、編譯
配置tslib,安裝路徑可以通過 --prefix 引數設定,這裡安裝到/usr/local/tslib:
-
$ ./autogen.sh
- $ ./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --prefix=/usr/local/tslib --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes
編譯安裝:
-
$ make
- $ sudo make install
完成後,tslib會按安裝到/usr/local/tslib目錄下。
進入下一步之前,先將/usr/local/tslib/etc/ts.conf檔案第二行“#module_raw input”註釋去掉,變為“module_raw input”,注意一定要頂格。
三、編譯安裝qt
1、解壓
-
$ cd ~/qt-arm
-
$ cp qt-everywhere-opensource-src-4.8.5.tar.bz2 ./
-
$ tar xjvf qt-everywhere-opensource-src-4.8.5.tar.bz2
- $ cd qt-everywhere-opensource-src-4.8.5
開啟解壓目錄下的mkspecs/qws/linux-arm-g++/qmake.conf:
- $ vi mkspecs/qws/linux-arm-g++/qmake.conf
用vi開啟qmake.conf 後,將arm-linux-全部替換arm-linux-gnueabihf-(注意:根據自己板子而定,並且一定要先將交叉編譯器的路徑加入PATH變數中),並加上-lts,然後儲存退出,更改後如下:
-
# modifications to g++.conf
-
QMAKE_CC = arm-linux-gnueabihf-gcc -lts
-
QMAKE_CXX = arm-linux-gnueabihf-g++ -lts
-
QMAKE_LINK = arm-linux-gnueabihf-g++ -lts
-
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts
-
# modifications to linux.conf
-
QMAKE_AR = arm-linux-gnueabihf-ar cqs
-
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
- QMAKE_STRIP = arm-linux-gnueabihf-strip<font face="黑體"></font>
3、配置Qt
如下,先通過 --prefix 指定qt安裝的路徑,-I後面指定上一步tslib的include路徑,-L後面指定上一步tslib的lib路徑,
-
$ sudo mkdir /usr/local/qt4.8.5-arm
- $ sudo ./configure --prefix=/usr/local/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license
可以執行./configure --help檢視引數的詳細說明,根據需要來配置合適的引數
如果配置的時候提示:
The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
/home/gary/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++.
說明找不到合適的交叉編譯工具,請重新設定PATH環境變數。如果還是不能解決,再修改mkspecs/qws/linux-arm-g++/qmake.conf,將交叉編譯工具改為絕對路徑,如下:
-
# modifications to g++.conf
-
QMAKE_CC = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -lts
-
QMAKE_CXX = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
-
QMAKE_LINK = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
-
QMAKE_LINK_SHLIB = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
-
# modifications to linux.conf
-
QMAKE_AR = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-ar cqs
-
QMAKE_OBJCOPY = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-objcopy
- QMAKE_STRIP = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-strip<font face="黑體"></font>
4、 編譯安裝
-
$ sudo make
- $ sudo make install
完成後,qt4.8.5即會安裝到主機/usr/local/qt4.8.5-arm目錄下。
四、配置編譯後的qt,以便在主機上用qmake編譯嵌入式qt應用
1、設定環境變數
在主機(如Ubuntu)當前終端下執行以下命令:
-
$ export PATH=$PATH:/usr/local/qt4.8.5-arm/bin
- $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib
或將以上命令新增到/etc/profile 檔案中,這樣系統登入時就自動設定好這些環境變數。
五、移植Qt到開發板
開發板上要使用的東西就2個,一個是編譯後的tslib,一個是編譯後qt目錄下的lib目錄。如下步驟將這兩個目錄拷貝到開發板上。
1、打包lib
我們Qt 安裝完成之後,為解決符號連結的問題,可以利用先打包,然後直接解壓到開發板的做法:
-
$ cd /usr/local/qt4.8.5-arm
-
$ tar -zcf lib.tar.gz lib
-
$ cd /usr/local
- $tar -zcf tslib.tar.gz tslib
將打包好的壓縮檔案 lib.tar.gz 和 tslib.tar.gz 複製到開發板,然後解壓:
-
mkdir -p /usr/local/qt4.8.5-arm
-
tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm
- tar xzvf tslib.tar.gz -C /usr/loacal
2、設定開發板上的環境變數
在目標板上新建一個名為setqtenv的檔案,
- vi setqtenv
並加入以下內容:
-
export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
-
export QTDIR=/usr/local/qt4.8.5-arm
-
export T_ROOT=/usr/local/tslib
-
export PATH=$T_ROOT/bin:$PATH
-
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
-
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 QT_QWS_FONTDIR=$QTDIR/lib/fonts
執行以下命令設定好qt環境變數的設定:
- source setqtenv
OK了,新版本的qt就可以使用了!