個人系統是Ubuntu 16.04編譯器是arm-linux-gnueabihf-gcc5.4,在ubuntu16.04中直接安裝便可。linux
編譯:android
第一步:ios
下載qt-everywhere-opensource-src-5.7.0.tar.gz,這個Qt官方有。安裝arm-linux-gnueabihf-gcc:c++
$ sudo apt install gcc-arm-linux-gnueabi $ sudo apt install gcc-arm-linux-gnueabihf
第二步:canvas
找個英文目錄,把qt-everywhere-opensource-src-5.7.0.tar.gz放進去。用終端解壓:ubuntu
$: tar -zxvf qt-everywhere-opensource-src-5.7.0.tar.gz
最好別右擊「提取到此處」,這個解壓好像和命令解壓不一樣,到編譯的時候就坑了。windows
第三步:bash
修改編譯配置文件,在目錄:qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++/下面qmake.conf。(注意個人改動)改成:ui
# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = arm-linux-gnueabihf-gcc QMAKE_CXX = arm-linux-gnueabihf-g++ QMAKE_LINK = arm-linux-gnueabihf-g++ QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ # modifications to linux.conf QMAKE_AR = arm-linux-gnueabihf-ar cqs QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy QMAKE_NM = arm-linux-gnueabihf-nm -P QMAKE_STRIP = arm-linux-gnueabihf-strip load(qt_config)
第四步:spa
在編譯以前,還有個改動,額。。。qt3d和qtcanvas3d在編譯的時候會報錯,說是未識別模塊,並且嵌入式的沒有opengl,識別了也會報錯,致使編譯失敗,並且編譯配置參數裏面也沒有這兩個模塊的配置。個人解決方法簡單粗暴,在配置時參數加-no-opengl,而後打開qt-everywhere-opensource-src-5.7.0/qt.pro文件,找到:
addModule(qt3d, qtdeclarative qtimageformats) addModule(qtcanvas3d, qtdeclarative)
這兩行註釋掉(#號註釋),或者直接刪掉。若是不註釋掉,即便加了-no-opengl也會報錯,編譯失敗。
第五步:
配置編譯參數,用./configre -help 能夠查看參數。個人配置是:
$./configure -release -opensource -xplatform linux-arm-gnueabihr-g++ -prefix /opt/Qt-5.5.7/armv7-a -c++11 -no-opengl
注意:紅色部分是你的Qt庫將要安裝的位置,慎重,若是之後要裝那,就寫那。移動了位置,用的時候qmake找不到庫。雖然能夠配置,可是每一個工程用的時候都得配路徑,很麻煩。-no-opengl表示沒有opengl。我沒加參數-qreal float ,由於我發現,加上以後編不過。在編譯到.../qtbase/src/gui/painting/qpdf.cpp的時候會報錯。
第六步:
若是上面配置沒有問題,接下來make:
$make
或者
$make -j2 /*CPU 幾個核可使用「-j幾」,核多編的快*/
等20~120分鐘。。。完成。
第七步:
安裝:
$sudo make install
在這裏加sudo是由於,安裝時會將庫文件複製到上面第七步配置的安裝目錄(/opt/Qt-5.7.0/armv7-a ),opt目錄是須要root權限的。
第八步:第九步:第十步:
編譯平臺插件,因爲Qt5之後,刪除了嵌入式的QWS(Qt windows system-Qt窗體系統)換成QPA(Qt Platform Abstration -Qt平臺抽象),平臺插件在qt-everywhere-opensource-src-5.7.0/qtbase/src/plugins/platforms/下面。有各類平臺的插件,基於frambuffer的插件是lunuxfb這個文件夾下,其餘的還有android、ios、winrt、windows等等,須要什麼平臺的編譯就是了。QPA運行時要加參數。
好了,這是編譯Qt5.7.0的過程。這個我把qt3d和qtcanvas3d砍掉了。