ARM-linux的Windows交叉編譯環境搭建


交叉編譯Arm Linux平台的QT5庫

1、准備交叉編譯環境

環境說明:Windows10 64位

此過程需要:

(1)Qt庫開源代碼,我使用的是5.13.0版本;
(2)Perl語言環境5.12版本以上;
(3)Python語言環境 2.7 版本以上;
(4)Windows平台上的MinGW開發工具集(內含本地編譯器gcc、g++ 4.9以上版本,支持c++11);
(5)Windows平台上的交叉編譯器arm-linux-gnueabihf(gcc、g++4.9以上版本,支持c++11)。
注:Qt Creator 完全安裝的情況 (4)可以省略

1.1、下載Qt庫源代碼

到Qt官網官網https://www.qt.io/download-open-source/#section-2下載qt-everywhere-opensource-src-5.7.0.zip或者qt-everywhere-opensource-src-5.7.0.tar.gz。
本次使用:qt-everywhere-src-5.13.0.zip

1.2、安裝Perl

到Perl官網https://www.perl.org/get.html下載ActivePerl 5.12以上版本,如ActivePerl-5.24.0.2400-MSWin32-x86-64int-300560.exe。安裝完成后將安裝目錄里的bin目錄路徑添加到windows環境變量的PATH中
本次使用:ActivePerl-5.28.msi

1.3、安裝Python

到Python官網 https://www.python.org/downloads/
下載Python2.7以上版本,如python-3.5.2.exe。安裝完成后將安裝目錄里的bin目錄路徑添加到windows環境變量的PATH中。
本次使用:python-3.6.8-amd64.exe

1.4、MinGW開發工具集

MinGW工具集內含編譯器工具gcc、g++等,需要此工具集來編譯Qt的qmake等開發工具,因為qmake這些開發工具是在本地windows上運行的。要求4.9以上版本的gcc、g++,4.8以上就已經支持c++11。
32位系統可以到https://sourceforge.net/projects/mingw/下載mingw-get-setup.exe后進行在線安裝;64位系統到https://sourceforge.net/projects/mingw-w64/下載mingw-w64-install.exe后進行在線安裝。安裝完成后將其bin目錄添加到環境變量PATH中。
注意:Qt Creator 完全安裝的情況 此步驟省略,到QT安裝目錄蝦將其bin目錄添加到環境變量PATH中。
例如:D:\ProgramFile\Qt5.13.2\Tools\mingw730_64\bin
本次使用:因為先完全安裝了Qt Creator 所以使用自帶的

1.5、安裝交叉編譯器

可到http://releases.linaro.org/14.07/components/toolchain/binaries/下載gcc-linaro-arm-linux-gnueabihf-4.9-2014.07-20140726_win32.exe,安裝完成后,將其bin目錄添加到環境變量PATH中。arm-linux-gnueabihf工具編譯后的程序不需要聯帶依賴庫一起打包。
本次使用:gcc-linaro-6.5.0-2018.12-i686-mingw32_arm-linux-gnueabihf

2、交叉編譯Qt庫

2.1、編譯前的處理

解壓Qt源碼到本地。用文本方式打開Qt源碼目錄里qtbase\mkspecs\linux-arm-gnueabi-g++\ qmake.conf配置文件,修改交叉編譯器程序名相關的配置。
修改前:

修改后:

編譯發現一個鏈接錯誤,查找其原因是有一個源文件沒有被編譯,挺奇怪的。解決辦法是修改qtbase\src\corelib\kernel\kernel.pri文件,貌似qpoll.cpp編譯條件沒達到,改為強制編譯。
修改前:

修改后:追加以下內容

2.2、編譯之configure

打開cmd窗口,進入Qt源碼目錄,執行如下代碼,然后輸入y接受許可協議開始配置,等待配置完成。
configure.bat -release -opensource -prefix D:\Qt5.13.0_ARM_Linux -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -xplatform linux-arm-gnueabi-g++
注:命令中,
-release:編譯release版本。
-opensource:表示開源許可;
-prefix:指定安裝目錄,根據自己喜好;安裝后qmake程序默認就會根據這個目錄路徑去搜索頭文件和庫文件,
-nomake:表示不編譯后面參數指定的模塊;
-no-opengl:表示不編譯OpenGL,這個我們用不着,也沒有安裝OpenGL環境,所以不編譯,否則會出錯;
–skip qtvirtualkeyboard:跳過qtvirtualkeyboard,沒有相應庫環境,不編譯,否則編譯和安裝過程中可能會報錯。
-xplatform linux-arm-gnueabi-g++:指定交叉編譯器配置目錄為linux-arm-gnueabi-g++,qmake會到qtbase\mkspecs\linux-arm-gnueabi-g++里讀取qmake.conf文件,找到交叉編譯工具來編譯Qt動態庫。
默認-shared:編譯動態庫
默認-platform:為win32-g++,即指定本地編譯器配置目錄,到qtbase\mkspecs\ win32-g++目錄里讀取qmake.conf文件,找到本地編譯工具來編譯qmake。

2.3、編譯之make

Configure正常完成后,執行命令mingw32-make開始編譯。
mingw32-make

2.4、編譯之make install

編譯完成后,執行mingw32-make install命令開始安裝,將會安裝把之前-prefix指定的目錄中。
mingw32-make install
注:qmake默認都是以-prefix指定的絕對目錄去搜索頭文件和庫文件,所以qmake本身可以移動變更路徑;但如果是整個Qt庫目錄路徑都變更,則需要在qmake.exe程序所在目錄增加一個qt.conf配置文件,文件內容為:

點擊查看代碼
[Paths]
Prefix=..

即用配置文件qt.conf里的Prefix項去更改qmake搜索的庫路徑,上面是一般情況情況即整個庫目錄被移動后時的配置方式,即以父目錄為庫路徑。

3、安裝與配置Qt Creator

3.1安裝Qt Creator

如果剛開始安裝過就省略此步驟
到Qt官網官網https://www.qt.io/download-open-source/#section-2下載獨立的Qt Creator程序安裝包qt-creator-opensource-windows-x86-4.1.0.exe來安裝。Qt Creator安裝程序本身不大,因為不含有qmake等工具,也不含有Qt庫。

3.2配置Qt Creator

啟動運行Qt Creator,菜單工具(Tools)->選項(options),打開設置對話框,切換到【Kits】如果是低版本可能是【構建與運行(build and run)】項。先添加交叉編譯器[添加-->GCC-->C++],點擊添加,找到交叉編譯器路徑,取個名稱,如下圖。
注意:這里是在1.5安裝后的目錄下
image

設置make路徑:點擊Add,找到minGW安裝目錄bin里的mingw32-make.exe,取個名后添加,如下圖。
注意:這里是Qt creator 安裝目錄下或1.4安裝后的目錄下
image

設置Qt版本,點擊添加,找到Qt庫安裝目錄bin里的qmake.exe,取個名后添加,如下圖
注意:這里是2.3~2.4編譯出來的目錄
image

最后整合整套工具,設置構建套件,如下圖,點擊添加,取個名稱,選擇之前設置好的交叉編譯器和Qt版本,點擊Apply。最終點擊”設置為默認”將該套方案作為當前編譯方案。
注意:這里是3.2做成的編譯器
image

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
如果交叉編譯的時候出make無法啟動的錯!請確保選擇了make路徑
點擊選中要編譯的工程-->左側點擊【項目】出現以下界面,請確保綠框中內容 如下圖:
image

========================================================================================================================
到此結束!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM