ubuntu16交叉編譯Qt5.9

熊彬彬發表於2017-12-01

1、安裝交叉編譯器

    一般購買ARM開發板,對應的交叉編譯器會由廠商提供。交叉編譯器也就是能在X86的環境下編譯出ARM中能執行的程式,例如cortex-A9的交叉編譯器:

  

    將這個包在ubuntu中解壓,路徑自己決定。然後將這個交叉編譯器中的bin目錄加入環境變數,例如我的:

export PATH=/home/clark/QtEnv/arm-cortexa9-linux-gnueabihf/4.9.3/bin:$PATH

    設定ubuntu環境變數可以參考我的部落格:http://blog.csdn.net/a18373279153/article/details/78542605

 

 

    驗證環境變數是否設定成功,在控制檯中輸入***-g++ -v,其中***代表你的交叉編譯器的名字,每種型別的晶片對應的不一樣,具體可以去bin目錄下檢視,例如我的是:

    

 

    所以我需要輸入arm-cortexa9-linux-gnueabihf-g++ -v,然後控制檯中出現編譯器的版本號就代表你安裝成功了。如果找不到,可能是你在64位的作業系統上安裝了32位的交叉編譯器,請看我這篇文章:https://blog.csdn.net/a18373279153/article/details/49658425

 

 

2、交叉編譯Qt

    首先在Qt官網下載對應的Qt原始碼:http://download.qt.io/archive/qt/

    

 

    在ubuntu中解壓縮,跳轉到qt-everywhere-opensource-src-5.9.1/qtbase/mkspecs/linux-arm-gnueabi-g++/目錄下,修改qmake.conf檔案,將編譯器都更換為剛剛安裝的交叉編譯器,例如我的:

    

 

    再跳轉到qt-everywhere-opensource-src-5.9.1目錄下,配置安裝選項:

 

./configure -release -nomake examples -no-iconv -no-opengl -no-assimp -no-qt3d-profile-jobs -no-qt3d-profile-gl -xplatform linux-arm-gnueabi-g++ -prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm -opensource -confirm-license

    這裡我去掉了opengl、Qt3D相關的庫、examples,編譯他們三個會導致編譯失敗。

 

    -prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm這個是設定安裝位置,由你自己定義。

    -no-iconv是為了防止應用程式出現如下錯誤:

            QIconvCodec::convertFromUnicode: usingLatin-1 for conversion, iconv_open failed
            QIconvCodec::convertToUnicode: using Latin-1for conversion, iconv_open failed​

 

    配置完成之後輸入:make -j4,表示開啟4個執行緒一起編譯,這樣會快些,編譯得個把小時。

    編譯完成後,輸入make install,安裝Qt。

 

 3、設定Qt Creator

    同樣在Qt官網下載可以直接安裝的Qt,例如:

    這個是linux64位桌面版的Qt,自帶Qt Creator。把他複製到ubuntu中後,可以直接./執行起來,影象化安裝。

    接下來配置構建和執行,將剛剛安裝的QtEmbed版本和交叉編譯器都新增進去

    
 

    

    

   

    注意:交叉編譯時只能點構建,不能點執行。因為編譯出程式是在arm跑的。

    

 

相關文章