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

一、準備交叉編譯環境

環境說明:Windows 7 64位html

此過程須要:python

(1)Qt庫開源代碼,我使用的是5.7.0版本;linux

(2)Perl語言環境5.12版本以上;c++

(3)Python語言環境 2.7 版本以上;windows

(4)Windows平臺上的MinGW開發工具集(內含本地編譯器gcc、g++ 4.9以上版本,支持c++11);工具

(5)Windows平臺上的交叉編譯器arm-linux-gnueabihf(gcc、g++4.9以上版本,支持c++11)。開發工具

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

1.二、安裝Perl

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

1.三、安裝Python

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

1.四、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.五、安裝交叉編譯器

以前使用的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工具編譯後的程序不須要聯帶依賴庫一塊兒打包。

二、交叉編譯Qt庫

2.一、編譯前的處理

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

修改前:

修改後:

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

修改前:

 

修改後:

 

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.三、編譯之make

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

2.四、編譯之make install

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

注:qmake默認都是以-prefix指定的絕對目錄去搜索頭文件和庫文件,因此qmake自己能夠移動變動路徑;但若是是整個Qt庫目錄路徑都變動,則須要在qmake.exe程序所在目錄增長一個qt.conf配置文件,文件內容爲:

[Paths]
Prefix=..

即用配置文件qt.conf裏的Prefix項去更改qmake搜索的庫路徑,上面是通常狀況狀況即整個庫目錄被移動後時的配置方式,即以父目錄爲庫路徑。

三、安裝與配置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程序了。

相關文章
相關標籤/搜索