Windows平台交叉編譯Arm Linux平台的QT5.7庫


1、准備交叉編譯環境

環境說明:Windows 7 64位

此過程需要:

(1)Qt庫開源代碼,我使用的是5.7.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)。

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。

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中。

1.3、安裝Python

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

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中。

1.5、安裝交叉編譯器

之前使用的Codesourcery公司的交叉編譯器版本較低(arm-2014.05-29-arm-none-linux-gnueabi.exe,arm-none-linux-gnueabi,gcc 4.8.3),支持c++11不完全,而且編譯好的程序需要聯帶幾個基礎的依賴庫一起打包,麻煩了點。

現使用linaro公司的交叉編譯器,可到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工具編譯后的程序不需要聯帶依賴庫一起打包。

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.7.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開始編譯。

2.4、編譯之make install

編譯完成后,執行mingw32-make install命令開始安裝,將會安裝把之前-prefix指定的目錄中。

注:qmake默認都是以-prefix指定的絕對目錄去搜索頭文件和庫文件,所以qmake本身可以移動變更路徑;但如果是整個Qt庫目錄路徑都變更,則需要在qmake.exe程序所在目錄增加一個qt.conf配置文件,文件內容為:

[Paths]
Prefix=..

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

3、安裝與配置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庫。

也可以下載windows平台的Qt整包qt-opensource-windows-x86-mingw530-5.7.0.exe來安裝,里面包含有Qt Creator、windows-x86 Qt庫、mingw5.3.0。所以如果使用這個安裝包,之前可以不用單獨安裝MinGW。安裝此包后可以開發本地的Qt程序,經過如下的配置后還可以開發ARM linux程序。

不論使用上述哪個包安裝,都需要按如下配置好上面編譯好的Qt庫才能編譯ARM linux平台的Qt程序。

啟動運行Qt Creator,菜單工具(Tools)->選項(options),打開設置對話框,切換到構建與運行(build and run)項。先添加交叉編譯器,點擊添加,找到交叉編譯器路徑,取個名稱,如下圖。

 

設置make路徑:點擊Add,找到minGW安裝目錄bin里的mingw32-make.exe,取個名后添加,如下圖。

如果需要用到調試功能,設置調試器Debugger與上類似。

設置Qt版本,點擊添加,找到Qt庫安裝目錄bin里的qmake.exe,取個名后添加,如下圖

 

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

至此,可以開發ARM linux上的Qt程序了。

 


免責聲明!

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



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