真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

QT5交叉編譯怎么實現(xiàn)

本篇內(nèi)容主要講解“QT5交叉編譯怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“QT5交叉編譯怎么實現(xiàn)”吧!

為南澗等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及南澗網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、南澗網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

configure配置

./configure -release -opensource -prefix  -no-largefile -no-pkg-config -no-qml-debug -xplatform  -qt-libpng -qt-zlib -qt-libjpeg -qt-freetype -qt-sql-sqlite -plugin-sql-sqlite -no-harfbuzz -no-openssl -no-libproxy -make libs -nomake tests -nomake examples -gui -widgets -no-cups -no-tslib -iconv -pch -no-c++11

在qtbase/mkspecs/目錄下根據(jù)相近的平臺創(chuàng)建對應(yīng)的目標(biāo)工具編譯配置目錄,如參考目錄下的linux-arm-gnueabi-g++創(chuàng)建

QT_QPA_DEFAULT_PLATFORM選項

The Qt Platform Abstraction (QPA) is the platform abstraction layer for Qt 5 and replaces Qt for Embedded Linux and the platform ports from Qt 4.

  QT_QPA_DEFAULT_PLATFORM = linuxfb
  QMAKE_CFLAGS_RELEASE   += -O2 -march=armv5te  
  QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te

QT_QPA_DEFAULT_PLATFORM是必須的,通常在mac上是cocoa,在window上是windows,在linuxX11下是xcb,如果有OPENGL支持,那么選eglfs. 對于無硬件加速的設(shè)備,選擇linuxfb,minimal僅僅是讓程序跑通,不起任何作用(看不到界面).QPA是QT Platform Abstraction的縮寫.

tslib代表QT對觸摸板的支持,需要額外添加tslib庫的鏈接,-I 和L后面分別為為第一步編譯tslib的include和lib的安裝目錄。

Qt5.7的版本連編譯的時候都要gcc編譯器支持c++11才能通過configure。

-c++std  .. Compile Qt with C++ standard edition (c++11, c++14, c++1z)
             Default: highest supported

Qt5.6.2及以前的版本通過添加-no-c++11的配置項,可以用c++98編譯,提示:

NOTICE: The -no-c++11 / --c++-level=c++98 option is deprecated.

Qt 5.7 will require C++11 support. The options are in effect for this
Qt 5.6 build, but you should update your build scripts to remove the
option and, if necessary, upgrade your compiler.

Make

構(gòu)建指定模塊

make -j4 module-qtbase

問題解決

  • 問題一:error :expected initializer before “throw”

上面這個問題我自己解決了,在主機(jī)目錄 /usr/include/i386-linux-gnu/sys/signalfd.h 文件中 signalfd 定義如下

extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
__THROW __nonnull ((2));

而海思交叉編譯工具目錄下 signalfd.h 文件中 signalfd 定義如下

extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
 __nonnull  ((2))   __THROW;

把 __nonnull ((2)) 和 __THROW 前后調(diào)換一下就可以了。

  • QPA插件編譯

目錄:qtbase/src/plugins/platforms 庫文件:qtbase/plugins/platforms/

運行

  • 問題一:QT_QPA_DEFAULT_PLATFORM = linux #eglfs

      # ./basiclayouts
      This application failed to start because it could not find or load the Qt platform plugin "linux #eglfs"
      in "".
    
      Reinstalling the application may fix this problem.
      Aborted

修改QT_QPA_DEFAULT_PLATFORM的值為linuxfb,拷貝插件libqlinuxfb.so到開發(fā)機(jī)器上。問題仍然出現(xiàn),解決辦法:設(shè)置相應(yīng)的環(huán)境變量。

export QT_PLUGIN_PATH=/mnt/3520d/qt5.6.2/plugins

將qtbase/src/plugins/platforms目錄內(nèi)容(整個目錄)都拷貝到環(huán)境變量指定的目錄下面。

  • 問題二:字體文件

      # ./basiclayouts
      QFontDatabase: Cannot find font directory /home/lzh/qt/qt-everywhere-opensource-src-5.6.2/hi3520d-uclibc/lib/fonts - is Qt installed correctly?
      QFontDatabase: Cannot find font directory /home/lzh/qt/qt-everywhere-opensource-src-5.6.2/hi3520d-uclibc/lib/fonts - is Qt installed correctly?
      QFontDatabase: Cannot find font directory /home/lzh/qt/qt-everywhere-opensource-src-5.6.2/hi3520d-uclibc/lib/fonts - is Qt installed correctly?
      QFontDatabase: Cannot find font directory /home/lzh/qt/qt-everywhere-opensource-src-5.6.2/hi3520d-uclibc/lib/fonts - is Qt installed correctly?

解決辦法:設(shè)置字體環(huán)境變量

export QT_QPA_FONTDIR=/mnt/3520d/qt5.6.2/lib/fonts

Qt normally uses fontconfig to provide access to system fonts. If fontconfig is not available, Qt will fall back to using QBasicFontDatabase. In this case, Qt applications will look for fonts in Qt's lib/fonts directory. Qt will automatically detect pre-rendered fonts and TrueType fonts. This directory can be overridden by setting the QT_QPA_FONTDIR environment variable.

顯示與界面

可以通過設(shè)置QT_QPA_PLATFORM環(huán)境變量或者是在命令行指定 -platform 選項來選擇響應(yīng)的顯示插件(eglfs, xcb, linuxfb等).

LinuxFb

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1

鼠標(biāo)配置

linuxfb自帶libinput支持,只需要設(shè)置環(huán)境變量就好了。

export QT_QPA_EVDEV_MOUSE_PARAMETERS="usb:/dev/event0"

支持熱插拔需要構(gòu)建的QT支持libudev:

Hot plugging is supported, but only if Qt was configured with libudev support (that is, if the libudev development headers are present in the sysroot at configure time). This allows connecting or disconnecting an input device while the application is running.

鍵盤配置

export QT_QPA_EVDEV_KEYBOARD_PARAMETERS="usb:/dev/event3"

圖片支持

PNG與JPEG格式圖片的支持,在構(gòu)建QT時需要配置相應(yīng)的選項:

PNG: -qt-libpng, QT5自帶支持
JPG:-qt-libjpeg, 需要編譯插件支持

對于JPEG的支持,除了增加構(gòu)建選項外,還需要將對應(yīng)的jpeg插件拷貝到設(shè)備上去,才能正確地處理圖片。

圖像插件代碼目錄在:qtbase/src/plugins/imageformats

構(gòu)建成功的插件庫位置在:qtbase/plugins/imageformats

將imageformats目錄拷貝到設(shè)備上,同時設(shè)置QT的插件路徑環(huán)境變量,與前面的QPA插件一致。

export QT_PLUGIN_PATH=/mnt/3520d/qt5.6.2/plugins

此外,JPEG圖片不支持透明度功能。

到此,相信大家對“QT5交叉編譯怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:QT5交叉編譯怎么實現(xiàn)
標(biāo)題鏈接:http://weahome.cn/article/jcdsic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部