1. 程式人生 > >[Qt配置指南—5]Qt 5.4.2 Configure Options---Qt for Embeded Linux嵌入式Linux

[Qt配置指南—5]Qt 5.4.2 Configure Options---Qt for Embeded Linux嵌入式Linux

如有錯誤,歡迎批評指正!!!

Qt for Embeded Linux

這裡著重討,http://doc.qt.io/qt-5/embedded-linux.html

自Qt 5.0釋出以來,Qt不再包含自己的視窗系統(QWS)實現。 對於單程序用例,Qt Platform Abstraction是一個優秀的解決方案。 Wayland可以支援多個圖形程序。

有多個平臺外掛可以在嵌入式Linux系統上使用:EGLFS,LinuxFB,KMS,DirectFB,Wayland。 這些的可用性取決於Qt的配置。 預設平臺外掛也是特定於裝置的。 例如,在許多板上,選擇eglfs作為預設板。 如果預設值不合適,則可以使用QT_QPA_PLATFORM環境變數引數來請求另一個外掛。 或者,對於快速測試,-platform命令列可以使用相同的語法。

一、配置特定裝置

為給定裝置構建Qt需要一個工具鏈和一個sysroot。此外,一些裝置需要針對EGL和OpenGL ES 2.0支援的供應商特定的適配程式碼。這與非加速平臺不相關,例如使用LinuxFB外掛的平臺,這隻適用於基於軟體的渲染。這意味著Qt Quick 2在這樣的設定中不起作用,因為它依賴於OpenGL進行渲染。

目錄qtbase / mkspecs / devices包含多個裝置的配置和圖形適配程式碼。例如,linux-rasp-pi2-g ++ mkspec包含構建設定,例如Raspberry Pi 2裝置的最佳編譯器和連結器標誌。 mkspec還包含關於eglfs鉤子(供應商特定的適配程式碼)的實現或者對適當的eglfs裝置整合外掛的引用的資訊。通過配置工具的-device引數選擇裝置。此引數後面的名稱必須至少部分匹配裝置下的其中一個子目錄。

以下是Raspberry Pi 2的示例配置。對於大多數嵌入式Linux板,configure命令看起來類似:
./configure -release 
            -opengl es2 
            -device linux-rasp-pi2-g++ 
            -device-option CROSS_COMPILE=$TOOLCHAIN/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- 
            -sysroot $ROOTFS 
            -prefix /usr/local/qt5

最重要的引數是-device和-sysroot。通過指定-sysroot,configure的特性檢測測試使用的包含檔案和庫以及Qt本身從指定位置獲取,而不是從主機PC的標準位置獲取。這意味著在主機上安裝開發包沒有意義。例如,要獲得libinput支援,在主機環境中安裝libinput開發頭和庫是不夠的或不必要的。相反,目標體系結構的頭和庫(例如ARM)必須存在於sysroot中。

在執行交叉編譯時也支援pkg-config。 configure會自動設定PKG_CONFIG_LIBDIR以使pkg-config報告編譯器和連結器設定基於sysroot而不是主機。這通常功能很好,沒有任何進一步的調整。但是,在執行configure之前,必須為主機取消設定環境變數(如PKG_CONFIG_PATH)。否則,Qt構建可能嘗試使用來自主機系統的不適當的標頭和庫。

指定-sysroot會導致在呼叫編譯器時自動設定--sysroot引數。在某些情況下,這是不可取的,可以通過傳遞-no-gcc-sysroot來禁用配置。

-prefix,-extprefix和-hostprefix控制Qt構建的預期目標目錄。在上面的例子中,Qt的ARM構建預計放在目標裝置上的/ usr / local / qt5中。請注意,執行make install不會向裝置部署任何內容。相反,安裝步驟的目標是由extprefix指定的目錄,預設為sysroot +字首,因此是可選的。然而,在許多情況下,“汙染”sysroot是不可取的,因此指定-extprefix變得重要。最後,-hostprefix允許從目標的二進位制檔案中分離主機工具,如qmake,rcc,uic。當給定時,這些工具將安裝在指定的目錄而不是extprefix。

二、嵌入式Linux裝置的平臺外掛(Platform Plugins for Embedded Linux Devices)

EGLFS:

EGL是OpenGL和本地視窗系統之間的介面。 Qt可以使用EGL進行上下文和表面管理,但是API不包含平臺特定:建立本地視窗(這不一定是螢幕上的實際視窗)仍然必須通過平臺特定的方法來完成。 因此需要板或GPU特定的適配程式碼。 這樣的適配或者作為eglfs鉤提供,其可以是編譯到平臺外掛中的單個原始檔,或者作為動態載入的EGL裝置整合外掛。

EGLFS是一個平臺外掛,用於在沒有實際視窗系統(如X11或Wayland)的EGL和OpenGL ES 2.0之上執行Qt5應用程式。 除了Qt Quick 2和原生OpenGL應用程式,它還支援軟體渲染視窗(例如QWidget)。 在後一種情況下,小部件的內容使用CPU呈現為影象,然後上傳到紋理並由外掛合成。

這在支援GPU的嵌入式裝置中鼓勵使用。

EGLFS強制第一個頂級視窗(無論是QWidget或QQuickView)成為全屏。此視窗也被選擇為根視窗小部件視窗,其中所有其他頂級視窗小部件(例如對話方塊,彈出選單或組合框下拉列表)被合成。這是必要的,因為使用EGLFS總是有一個本地視窗和EGL視窗表面,這些屬於首先建立的視窗部件或視窗。當主視窗存在於應用程式的整個生命週期中,並且所有其他視窗小部件都是非頂級視窗或者在顯示主視窗之後建立時,這種方法工作得很好。

基於OpenGL的視窗還有其他限制。從Qt 5.3開始,eglfs支援單個全屏GL視窗(例如,基於OpenGL的QWindow,QQuickView或QGLWidget)。不支援開啟其他OpenGL視窗或將這些視窗與基於QWidget的內容混合,並且會以錯誤訊息終止應用程式。

如果需要,可以使用以下環境變數配置eglfs:

QT_QPA_EGLFS_FB - 覆蓋幀緩衝裝置。預設值為/ dev / fb0。在大多數嵌入式平臺上,這不是很相關,因為framebuffer僅用於查詢設定,如顯示維度。但在某些裝置上,此引數提供了指定在多個顯示設定中使用的顯示的能力,類似於LinuxFB中的fb引數。

QT_QPA_EGLFS_WIDTH和QT_QPA_EGLFS_HEIGHT - 包含螢幕寬度和高度(以畫素為單位)。雖然eglfs嘗試從幀緩衝裝置/ dev / fb0確定維度,但這不總是工作,手動指定大小可能變得必要。

QT_QPA_EGLFS_PHYSICAL_WIDTH和QT_QPA_EGLFS_PHYSICAL_HEIGHT - 物理螢幕寬度和高度(以毫米為單位)。在幀緩衝裝置/ dev / fb0不可用或查詢不成功的平臺上,基於預設DPI為100計算值。此變數可用於覆蓋任何此類預設值。

QT_QPA_EGLFS_DEPTH - 覆蓋螢幕的顏色深度。在framebuffer裝置/ dev / fb0不可用或查詢不成功的平臺上,使用預設值32。此變數可用於覆蓋任何此類預設值。請注意,這僅影響由QScreen報告的顏色深度值。它沒有連線到EGL配置和用於OpenGL渲染的顏色深度。

QT_QPA_EGLFS_SWAPINTERVAL - 預設情況下,將請求交換間隔為1。這使得能夠同步到顯示垂直重新整理。該值可以使用此環境變數覆蓋。例如,傳遞0將禁用交換時的阻塞,導致儘可能快地執行,而不進行任何同步。

QT_QPA_EGLFS_FORCEVSYNC - 設定時,eglfs在幀緩衝裝置上請求FBIO_WAITFORVSYNC。

QT_QPA_EGLFS_FORCE888 - 設定時,建立新的上下文,視窗或螢幕外表面時,將忽略紅色,綠色和藍色通道大小。相反,外掛請求每個通道8位的配置。這在預設選擇每畫素小於32或24位的配置但已知不適合的裝置上是有用的,例如由於帶狀效應。而不是更改所有應用程式,此變數提供了一個更容易的快捷方式強制24/32 bpp配置的給定裝置。

QT_QPA_EGLFS_DEBUG - 設定時,在除錯輸出上將列印一些除錯資訊。例如,輸入QSurfaceFormat和所選EGL配置的屬性在建立新上下文時列印。與Qt Quick的QSG_INFO變數一起,這可以為與EGL配置相關的故障排除提供有用的資訊。

QT_QPA_EGLFS_INTEGRATION - 除了編譯的鉤子之外,還可以以動態載入的外掛的形式提供裝置或供應商特定的適配。此環境變數強制執行特定的外掛。例如,將其設定為eglfs_kms將使用KMS / DRM後端。這只是一個選項,當沒有在裝置makepecs中指定靜態或編譯的鉤子。在實踐中,傳統的編譯鉤子很少使用,幾乎所有後端都遷移到外掛。裝置仍然包含相關的EGLFS_DEVICE_INTEGRATION條目:該特定裝置的首選後端的名稱。這是可選的,但是非常有用,以避免在目標系統中存在多個外掛的情況下設定此環境變數。在桌面環境中,根據DISPLAY環境變數的存在,KMS或X11後端具有優先順序。注意,在一些板上使用none的特殊值而不是實際的外掛。這表明不需要特殊的整合來使用EGL與幀緩衝區,因此不必載入外掛。

LinuxFB:

直接寫入到幀緩衝,僅支援軟體渲染。

允許指定附加設定通過傳遞QT_QPA_PLATFORM環境變數或者-platform命令列選項。如:

QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1指定幀緩衝裝置/dev/fb1而不是fb0。

fb=/dev/fbN :指定的幀緩衝裝置。多個顯示設定,這通常允許在不同的顯示器上顯示應用程式。暫時沒有辦法使用來自一個Qt應用程式的多個幀快取。

size=<width>x<height> :指定螢幕的畫素大小。外掛試圖查詢的幀緩衝裝置物理和邏輯尺寸。然而,這可能並不總是導致正確的結果,因此可能需要顯式指定值.。

mmsize=<width>x<height>:毫米的物理寬高

offset=<width>x<height> :偏移量,左上角(0,0)

nographicsmodeswitch:不切換虛擬終端到圖形模式。如果在圖形模式,閃爍游標和螢幕消隱通常禁用。當設定此引數時,這些引數也會被跳過.。

tty=/dev/ttyN:重寫虛擬控制檯。僅在nographicsmodeswitch未設定時生效。

Input:

在目前沒有視窗的系統中,滑鼠、鍵盤、觸控裝置通過evdev或者使用幫助庫如lininput或者tslib直接獲取資料。注意,裝置節點/dev/input/event*能夠被使用者可讀。eglfs和Linuxfb包含所有的輸入處理程式碼。

使用libinput

libinput是一個能夠處理輸入裝置的庫。能夠提供可替換Qt自己的evdev功能。為了使用該功能,需要Qt配置時使能libudev和lininput。鍵盤支援需要xkbcommon。在使用EGLFS和LinuxFB是,預設包含。如果libinput不可用或者QT_QPA_EGLFS_NO_LIBINPUT被設定,使用Qt再帶evdev處理。

輸入使用EGLFS和linuxFB,不使用lininput

裝置節點名被設定在環境變數:QT_QPA_EVDEV_MOUSE_PARAMETERS, QT_QPA_EVDEV_KEYBOARD_PARAMETERS and QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS。同樣內建輸入處理可以禁用,設定QT_QPA_EGLFS_DISABLE_INPUT or QT_QPA_FB_DISABLE_INPUT 置為1。在某些觸控式螢幕上,座標必須旋轉,通過設定QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS to rotate=180。

滑鼠Mouse

滑鼠游標的出現不論QT_QPA_EGLFS_HIDECURSOR (for eglfs) or QT_QPA_FB_HIDECURSOR (for linuxfb)有沒有被設定,基於libudev的Qt總是報告至少一個滑鼠可用。當libudev不支援時,除非明確通過環境變數關閉顯示,否則滑鼠一直出現。

熱插拔僅在Qt配置libudev時生效。在應用執行時可連線斷開裝置。

鍵盤Keyboard

evdev鍵盤處理支援額外引數。

/dev/input/...:指定輸入裝置名,否則通過libudev或者查詢所用可用節點。

grap:使能捕獲輸入裝置。

keymap:指定使用者鍵盤檔名。

enable-compose:使能合成。

repeat-delay:設定使用者鍵重複延時。

repeat-rate:設定使用者鍵重複速度。

在沒有禁用其終端會話的嵌入式Linux系統上,按鍵上的行為可能會引起混亂,因為輸入事件由Qt應用程式和tty處理。 為了克服這個問題,可以使用以下選項:

相關推薦

[Qt配置指南5]Qt 5.4.2 Configure Options---Qt for Embeded Linux嵌入式Linux

如有錯誤,歡迎批評指正!!! Qt for Embeded Linux 這裡著重討,http://doc.qt.io/qt-5/embedded-linux.html 自Qt 5.0釋出以來,Qt不再包含自己的視窗系統(QWS)實現。 對於單程序

VS2013 + Qt 配置指南

【Qt 簡介】 一個跨平臺應用程式和UI開發框架。它包括跨平臺類庫、整合開發工具和跨平臺 IDE。使用 Qt 您只需一次性開發應用程式,無須重新編寫原始碼,便可跨不同桌面和嵌入式作業系統部署這些

伺服器證書安裝配置指南(IIS7.5

1.啟動IIS管理器,點選開始選單->所有程式->管理工具->Internet資訊服務(IIS)管理器: 2.選擇“伺服器證書”: 3.在右邊視窗,選擇“匯入” 4.匯入CA簽好的私鑰證書檔案 5.證書匯入成功,如下圖: 6.將SSL證書和網站繫結

OPENWRT安裝配置指南之 17.01.4 LEDE

普通 int lang 撥號 prot 1.4 安裝 edit ply 簡介 這個東西,需要看簡介的就不要看下去了。 下面已剛刷進去,路由IP地址為192.168.1.1為例開始配置。 瀏覽器訪問192.168.1.1,無密碼。 一:配置上網 不管你是什麽方式上網,請根據自

【內核配置】十、Linux3.4.2開發板環境搭建

part oot board arm-linux 啟動 搭建 服務器 arm uimage 主 機:VMWare--Ubuntu-16.04.2-x64-100ask 開發板:JZ2440--256M NandFlash,   2M NorFlash,   64M

OpenStack Queens指南 :Install and configure the dashboard for Red Hat Enterprise Linux and CentOS

[[email protected] ~]# yum install openstack-dashboard -yLoaded plugins: fastestmirror, langpacksRHEL-Repository                     

unbuntu 14.04 安裝 QT 5.4.2

小學期課程設計 需要在linux 系統下安裝QT ,比較簡單~後面還會寫到 QT 與 MySQL 資料庫的連結問題,這個問題很頭疼,一週的完成時間,有兩天都浪費在這個問題上,寫說說怎麼安裝把,雖然網上也有很多教程,但還是想把自己的經歷以及出現過的問題寫下來, 一.下載安裝包

Centos7.5 Prometheus2.5配置和基於Consul1.2.4的服務發現

cst 服務 idc def inux minute some license chown 一、Prometheus安裝及配置 請參考:CentOS7.5 Prometheus2.5+Grafana5.4監控部署 二 、基於Consul的服務發現 1、概述 Consul

28,MySQL 8.0參考手冊 5.4.2.2預設錯誤日誌目標配置

本節討論哪些伺服器選項可配置預設錯誤日誌目標,該目標可以是控制檯或命名檔案。它還指示哪些日誌寫入器元件將其自己的輸出目標基於預設目標。在此討論中,“ 控制檯 ”表示 stderr標準錯誤輸出。這是您的終端或控制檯視窗,除非標準錯誤輸出已被重定向到不同的目的地。對於Window

Apache多虛擬主機多版本PHP(5.2+5.3+5.4)共存執行配置全過程

因為某種需求,可能是因為早期的專案需要低版本的php,和目前開發所用的版本不太一致,我們需要給不同的虛擬主機配置不同版本的PHP。避免去額外配置多個Apache,等iis和apache共存的麻煩。 下文引量說明: D:/Apache/          Apache安裝目錄 D:/php53/      

qt creator原始碼全方面分析(4-5)

[TOC] # Qt中的字串 Qt中處理字串最常用的肯定是QString,但是在qt creator原始碼中出現了大量的QLatin1String。下面我們來介紹下區別。 ## QLatinString ### 詳細介紹 我們首先來看[QLatinString](https://doc.qt.io/

iScroll 4.2.5 中文API

clip 基本 包括 sla 大量 oot 屬性 con padding 下載iScroll4.2.5 iScroll的歷史 之所以iscroll會誕生,主要是因為無論是在iphone、ipod、android 或是更早前的移動webkit都沒有提供一種原生的方式來支持在一

TortoiseSVN 1.9.5安裝 與 Eclipse4.4.2及以上版本中安裝SVN插件

new port 作用 nbsp fin 1.8 detail net .net 引自: http://blog.csdn.net/chenchunlin526/article/details/54631458 TortoiseSVN 1.9.5安裝 與 Eclipse4

zabbix 2.4.5升級到3.2.6總結

zabbix1、如果php版本小於5.6,需要升級到5.6以上。2、保存數據庫不變,當zabbix server或zabbix proxy升級後啟動時會自動更新數據庫。3、整個架構的zabbix server 和 zabbix proxy都要同時升級。4、如果升級後新增到proxy的機器無法識別,先重啟pro

web.xml & web-fragment.xml (Servlet 2.3, 2.4, 2.5 + 3.0)模板

div location log javaee mls schema ins pub too 轉自:http://jlcon.iteye.com/blog/890964 web.xml v2.3 Xml代碼 <?xml version="1.0" en

Redhat6.5基礎配置指南

com strong mage miss host use 異常 文件 服務器 Redhat6.5基礎配置指南   本文針對鄙人在工作中常用系統配置加以說明,通常公司用於生產和測試的服務器基本上都不能連接外網,需要針對剛剛安裝好的系統做一系列的常用配置。   一、常用基礎系

Windws Server 2008 R2 WEB環境配置之IIS7/IIS7.5+FastCGI+PHP 5.6.4+MYSQL+phpMyAdmin

php擴展模塊 dev sql fig文件 version 可執行 ges 全能 bstr 本篇為WEB環境配置的匯總篇,其中PHP以FASTCGI方式來運行,這種方式性能更高。經過配置後,我們的服務器將同時可以運行PHP和.NET的程序,屬稱全能服務器。所有配置可以根據自

Ext3 Functhion擴展的5個實例方法 p135 4.2.7.6

src blog 技術分享 mage alt 圖片 img com 4.2 Ext3 Functhion擴展的5個實例方法 p135 4.2.7.6

mac 中 用 qt配置 SDL 2

qt sdl1.安裝SDL 22.同樣也是各種動態與靜態問題。也可以直接用官網上的。主要是他默認只能顯示bmp格式的圖片。同時要加上(SDL_Delay(2000000000000);//延時2000毫秒,2s後自動關閉)不然看不到 #------------------------------------

用VSCode開發一個asp.net core 2.0+angular 5項目(4): Angular5全局錯誤處理

create 打印 事件 如果 log 異步操作 truct gin 按鈕 第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html