Qt5 7 0編譯移植到Linux Arm A9

2021-07-24 13:30:38 字數 2945 閱讀 9368

摘要: qt5.7.0終於發布了,5.7.0增加了好多新功能,下面是編譯5.7.0的過程,後面有時間再寫一篇完整編譯的(即5.7.0在arm板子上沒有opengl的情況下如何使用quick)。

我的系統是ubuntu 16.04編譯器是arm-linux-gnueabihf-gcc5.4,在ubuntu16.04中直接安裝即可。

編譯:第一步:

$ sudo apt install gcc-arm-linux-gnueabi

$ sudo apt install gcc-arm-linux-gnueabihf

第二步:

找個英文目錄,把qt-everywhere-opensource-src-5.7.0.tar.gz放進去。用終端解壓:

$: tar -zxvf qt-everywhere-opensource-src-5.7.0.tar.gz
最好別右擊「提取到此處」,這個解壓好像和命令解壓不同,到編譯的時候就坑了。

第三步:

修改編譯配置檔案,在目錄:qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++/下面qmake.conf。(注意我的改動)改為:

#

# 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)

第四步:

在編譯之前,還有個改動,額。。。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砍掉了。

windows下qt工程移植到linux

把工程裡面的目錄debug generatedfiles release win32 x64和檔案 user sln vcxproj filters刪掉。這裡根據vs版本的不同刪除的檔案和目錄也可能不同。只要保留.h cpp qrc 沒有這個檔案編譯出來的qt專案會顯示不了 ui檔案和resourc...

Ubuntu移植qt4 4 3到mips平台

ubuntu移植qt4.4.3到mips平台 harish hu 配置mips 編譯工具 exportpath path 二 編譯tslib 設定環境變數 exportcc mipsel linux gcc exportcxx mipsel linux g 安裝如下軟體 sudoapt get in...

移植qt之交叉編譯tslib 1 4

export prefix path to your tslib 1.4 dir export cc path to your cross compiler bin dir autogen.sh is an important sh file,it produce configure file ac...