交叉編譯QT4.8.7源碼生成qmake工具
TQ-i.MX6UL使用的QT版本是QT4.8.7,板卡出廠前附帶的開發資料中,天嵌官方沒有爲開發者編譯生成qmake工具。因此,爲了後續進行的QT開發,我們需要自己手動編譯QT源碼,生成qmake。
編譯前準備:
- 確保交叉編譯器版本是arm-linux-gnueabihf-gcc 5.3.1 20160412 (Linaro GCC 5.3-2016.05)
- Qt源碼版本是:qt-everywhere-opensource-src-4.8.7
- tslib源碼版本是:tslib-1.1
TQ官方提供了一個組合軟件包,裏面包含了Qt源碼和tslib源碼,存放在以下路徑:
TQIMX6UL_COREB_CD_V1.0_R2.1_20171115\Linux源碼包\Qt源碼\qt-4.8.7_tslib-1.1.tar.bz2
開發者也可以在以下網址下載源碼:
Qt源碼:http://mirrors.ustc.edu.cn/qtproject/archive/qt/4.8/4.8.7/
tslib源碼:https://github.com/kergoth/tslib/releases?after=1.5
1、把QT源碼和tslib源碼qt-4.8.7_tslib-1.1.tar.bz2通過FileZilla Client工具,上傳到ubuntu系統的/opt/tq-imx6ul/source_code目錄。執行以下命令,進行解壓:
tar xvf qt-4.8.7_tslib-1.1.tar.bz2 -C /
解壓完成後,QT源碼和tslib源碼存放在以下目錄:/opt/EmbedSky/TQIMX6UL/TQ_COREB
2、因爲qt源碼編譯需要依賴於tslib源碼,所以,在編譯qt源碼之前,需要先編譯tslib源碼。tslib源碼的編譯腳本爲build.sh,以下是編譯腳本的內容:
腳本的內容:指定交叉編譯器的具體版本和路徑,INSTALL_DIR指定tslib的安裝目錄。然後執行make命令進行編譯。Make install 命令進行安裝。
我們可以在ubuntu的命令行終端,執行以下命令,進行tslib的安裝:
cd /opt/EmbedSky/TQIMX6UL/TQ_COREB/tslib-1.1
./build.sh
安裝完成後tslib存放在:/opt/EmbedSky/TQIMX6UL/TQ_COREB/imx6ul_rootfs/opt
3、成功編譯tslib後,開始進行qt源碼的編譯安裝。Qt源碼的一系列編譯命令,已封裝成build_arm.sh腳本,如下圖所示:
4、build_arm.sh的具體內容,如下圖所示:
腳本的內容:指定交叉編譯器的路徑和版本。./configure指定qt源碼編譯時的配置選項,查看配置選項,可以看出此次編譯是把qt源碼編譯爲release版本,動態鏈接庫形式,應用於嵌入式arm平臺,支持sqlite數據庫,支持jpeg和png圖形編碼格式,等等。然後執行make -j8進行編譯,make install進行安裝。
我們可以在ubuntu的命令行終端,執行以下命令,進行qt源碼的編譯和安裝:
cd /opt/EmbedSky/TQIMX6UL/TQ_COREB/qt-everywhere-opensource-src-4.8.7
./build_arm.sh
安裝完成後qt存放在:/opt/EmbedSky/TQIMX6UL/TQ_COREA/imx6ul_rootfs/opt
執行以下命令,把qt源碼複製到跟tslib同樣的目錄下,便於管理。
cd /opt/EmbedSky/TQIMX6UL/TQ_COREA/
cp imx6ul_rootfs /opt/EmbedSky/TQIMX6UL/TQ_COREB/ -a
5、完成以上工作後,qmake工具存放在以下目錄:
/opt/EmbedSky/TQIMX6UL/TQ_COREB/imx6ul_rootfs/opt/qt-4.8.7/bin/