Hi3516開發筆記(七):Hi3516虛擬機器交叉開發環境搭建之交叉編譯Qt

21497936發表於2021-12-06

前言

  前面搭建好了基礎的交叉編譯環境,但是我們使用到的主要是qt,所以要交叉編譯qt,本篇交叉編譯qt並安裝ubuntu版本的qt,與緊接著本篇的後一篇緊密相關。

獲取Qt原始碼

  《 獲取下載Qt安裝包,Qt原始碼全國網址備忘錄(可不用註冊,即可下載各版本Qt安裝包和Qt原始碼包)
  下載Qt5.12.7版本如下圖:
   在這裡插入圖片描述
  (建議,同時下載該版本的ubuntu安裝包,包含了qtcreator和mingw32的編譯器,這樣可以在ubuntu上可以先跑部分與arm無關的程式碼)

前提

交叉編譯

步驟一:複製解壓

   在這裡插入圖片描述

步驟二:配置交叉編譯器

  先檢查交叉編譯器,如下圖:
   在這裡插入圖片描述

步驟三:修改平臺檔案

cd /home/yang/work/src/qt-everywhere-src-5.12.7/qtbase/mkspecs/linux-arm-gnueabi-g++gedit qmake.conf

   在這裡插入圖片描述
  選擇的是linux-arm-gnueabi-g++平臺,修改器配置檔案的編譯器如下:

## qmake configuration for building with arm-linux-gnueabi-g++#MAKEFILE_GENERATOR      = UNIXCONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)# modifications to g++.conf#QMAKE_CC                = arm-linux-gnueabi-gcc#QMAKE_CXX               = arm-linux-gnueabi-g++#QMAKE_LINK              = arm-linux-gnueabi-g++#QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++QMAKE_CC                = arm-himix200-linux-gcc
QMAKE_CXX               = arm-himix200-linux-g++QMAKE_LINK              = arm-himix200-linux-g++QMAKE_LINK_SHLIB        = arm-himix200-linux-g++# modifications to linux.conf#QMAKE_AR                = arm-linux-gnueabi-ar cqs#QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy#QMAKE_NM                = arm-linux-gnueabi-nm -P#QMAKE_STRIP             = arm-linux-gnueabi-stripQMAKE_AR                = arm-himix200-linux-ar cqs
QMAKE_OBJCOPY           = arm-himix200-linux-objcopy
QMAKE_NM                = arm-himix200-linux-nm -P
QMAKE_STRIP             = arm-himix200-linux-stripload(qt_config)

步驟四:配置qt原始碼configure

./configure -prefix /home/yang/work/rootfs \	-opensource -confirm-license -release \	-linuxfb -qt-zlib -no-gif -qt-libpng \	-qt-libjpeg -qt-freetype -no-rpath -no-pch \	-no-avx -no-openssl -no-cups -no-dbus -no-eglfs \	-no-pkg-config -no-glib -no-iconv -no-opengl \	-xplatform linux-arm-gnueabi-g++ -make libs \	-nomake tools -qt-sqlite -nomake tests -v \	-skip qtgamepad \	-skip qtandroidextras \	-skip qtmacextras \	-skip qtx11extras \	-skip qtsensors \	-skip qtserialbus \	-skip qtwebchannel \	-skip qtwebsockets \	-skip qtlocation \	-skip qtquickcontrols \	-skip qtpurchasing \	-skip qtconnectivity \	-skip qtscxml \	-skip qtxmlpatterns \	-skip qtnetworkauth \	-skip qtspeech \	-skip qtscript \	-skip qtremoteobjects \	-skip qtcharts \	-skip qtdatavis3d \	-skip qtwebview

  如下:
   在這裡插入圖片描述

步驟五:編譯make

make -j8

  (注意:先是g++編譯生成對應的qmake,後是arm-himix200-linux-g++編譯生成對應的qt庫)
   在這裡插入圖片描述
  出現“python: command not found”編譯錯誤,如下:
   在這裡插入圖片描述
  安裝pathon(python3的命令是:python3,此處是python),所及即便是已經安裝了python3也需要安裝python,當然也可以建立軟連線python指向python3,筆者選擇安裝:

sudo apt-get install python

  然後繼續編譯:

make -j8

  非常漫長的額等待,都出去吃了個飯了…
   在這裡插入圖片描述

步驟六:安裝Qt

make install

   在這裡插入圖片描述

步驟七:檢查Qt

   在這裡插入圖片描述

安裝Qt5.12.17的ubuntu版本

步驟一:複製

   在這裡插入圖片描述

步驟二:安裝Qt

   在這裡插入圖片描述
   在這裡插入圖片描述
  (PS:注意斷網,不然需要登入qt賬號)
   在這裡插入圖片描述
   在這裡插入圖片描述
   在這裡插入圖片描述
   在這裡插入圖片描述
  整理一下/home下的東西,繼續安裝:
  
在這裡插入圖片描述
   在這裡插入圖片描述

   在這裡插入圖片描述

   在這裡插入圖片描述

步驟三:新建一個Qt程式,執行“Hello world!!!”

   在這裡插入圖片描述
   在這裡插入圖片描述

  出現老問題:
   在這裡插入圖片描述

  參照博文:《 關於 編譯QT專案時報錯: error: cannot find -lGL 的解決方法》解決後,繼續編譯。
   在這裡插入圖片描述

步驟四:宿主機執行“Hello world!!!”

  新增個QLabel,寫上你第一次接觸程式設計的“Hello world!!!”,如下圖:
   在這裡插入圖片描述

上一篇:《 Hi3516開發筆記(六):通過HiTools使用USB/串列埠將uboot、kernel、rootfs和userdata按照分割槽表燒寫映象
下一篇:《Hi3516開發筆記(八):Hi3516虛擬機器交叉開發環境搭建之配置QtCreator開發交叉編譯環境》敬請期待…


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2845863/,如需轉載,請註明出處,否則將追究法律責任。

相關文章