1. 程式人生 > >Qt5.9.7 for ARM的編譯安裝(32位和64位)

Qt5.9.7 for ARM的編譯安裝(32位和64位)

Qt5.9.7 for ARM的編譯安裝

 

  • 下載原始碼

前往http://download.qt.io/official_releases/qt/5.9/5.9.7/single/下載最新版的原始碼(我這裡下載的是當時最新的5.9.7)qt-everywhere-opensource-src-5.9.7.tar.xz,然後解壓到某個資料夾

  • 為你的Linux安裝常用的開發環境,比如gcc,make,cmake,gdb,g++

我用的是debian9.5,sudo apt-get install build-essential可以安裝大部分需要的開發環境。

  • 安裝
    arm-linux-gcc

注意,別用4.x的arm-linux-gcc,因為老版本的gcc不支援c++11,雖然4.8開始的gcc可以通過-std=c++11來開啟c++11,但編譯還是會有很多問題,我用的是6.3.1的版本,對c++支援比較好。從網上下載arm-linux-gcc的壓縮包解壓出來設定好環境變數就行了,注意arm-gcc有好多種版本,要選擇arm-linux-gnueabihf或arm-linux-gnueabi,如果你的ARM支援硬體浮點運算就選擇前者,其中x86_64表示宿主機是64位並不是目標平臺是x86_64。配置完了別忘了驗證你的arm-linux-gcc是否能執行,方法與PC上的gcc類似。

gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz 記得下載這個gcc-linaro-6.3.1-2017.02-x86_64_arm-eabi.tar.xz而不是這個

  • 修改qmake.conf

因為我選擇的是支援硬體浮點運算的arm-gcc,而qmake.conf預設的是不帶hf的gcc,所以要做修改,找到qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,將所有的arm-linux-gnueabi替換成arm-linux-gnueabihf,然後儲存。

  • 配置

這裡去掉了opengl,目前還沒找到怎麼在arm中編譯支援opengl的qt,安裝路徑我選擇的是/opt/arm-qt,務必確認安裝路徑存在。

32位arm:

../configure -release -extprefix /opt/arm-qt -xplatform linux-arm-gnueabi-g++ -no-opengl -no-openssl -nomake tests -no-compile-examples -nomake examples -gif -ico -qt-libpng -qt-libjpeg -qt-sqlite

64位aarch64:

../configure -recheck-all -release -extprefix /opt/aarch64-qt -xplatform linux-aarch64-gnu-g++ -no-opengl -no-openssl -nomake tests -no-compile-examples -nomake examples -gif -ico -qt-libpng -qt-libjpeg -qt-sqlite

在此過程中,會讓你選擇商業版還是開源版,選擇o就行,還有是否接受協議,輸入y就行。

  • Make

前面的步驟都沒問題之後,就可以開始漫長的編譯了,如果你的CPU比較強大,可以多執行緒加快速度,比如make -j4,如果你的arm-gcc版本低於6.x最好單執行緒,不然很容易出錯。Make過程需要很長時間。

  • make無誤之後,就可以make install

注意許可權問題,可能要sudo make install,只要make沒出錯,install幾乎不會有問題。

  • qt creator中加入剛才編譯安裝的armqt

當然前提是你已經為宿主機安裝了qt。

 

  • 用qt creator新建一個arm版的qt程式測試一下能不能正常執行,注意,將編譯好的程式拷貝到arm上可能要chmod改一下許可權才能執行。