自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度解析 Qt Eembedded Linux移植要點

移動開發(fā)
本文介紹的是 Qt Eembedded Linux移植要點,從不同角度來講解移植要點。先來看內(nèi)容。

Qt Eembedded Linux移植要點是本文要介紹的內(nèi)容,不多說。先來看內(nèi)容。

1、安裝qt 對系統(tǒng)的要求

安裝 qt 的過程在不同的平臺上會有所不同,主要關(guān)嵌入式linux平臺上如何安裝。若需要提供對OpenSSL的支持,需要通過單獨安裝OpenSSL Toolkit,來獲得Secure Sockets Layer (SSL)。對于不同的平臺上,會有不同的要求。下面具體關(guān)注嵌入式linux的要求。如果要在qt上對QtWebKit模塊的支持,必須使用uClibc 0.9.29或者更高的版本,以對pthread的支持。在內(nèi)存方面的要求主要取決于體系架構(gòu)以及在編譯過程中使能的QT選項。下面是針不同平臺上qt支持庫的大小。

  1. Architecture         
  2.  Compiler  
  3.  QtCore  
  4.  QtGui  
  5.  QtNetwork  
  6.  QtWebKit  
  7.    
  8. Minimal  
  9.  Normal  
  10.  Minimal  
  11.  Normal  
  12.  Minimal  
  13.  Normal  
  14.  Minimal  
  15.  Normal  
  16.    
  17. linux-x86-g++  
  18.  GCC 4.2.4  
  19.  1.7M  
  20.  2.7M  
  21.  3.3M  
  22.  9.9M  
  23.  653K  
  24.  1.1M  
  25.  N/A  
  26.  17M  
  27.    
  28. linux-arm-g++  
  29.  GCC 4.1.1  
  30.  1.9M  
  31.   3.2M  
  32.  4.1M  
  33.  11M  
  34.  507K  
  35.  1.0M  
  36.  N/A  
  37.  17M  
  38.    
  39. linux-arm-g++ (thumb)  
  40.  GCC 4.1.1  
  41.  1.7M  
  42.   2.8M  
  43.  4.0M  
  44.  9.8M  
  45.  409K  
  46.  796K  
  47.  N/A  
  48.  17M  
  49.  
  50. linux-mips-g++ (MIPS32)  
  51.  GCC 4.2.4  
  52.  2.0M  
  53.   3.2M   
  54.  4.5M  
  55.  12M  
  56.  505K  
  57.  1003K  
  58.  N/A  
  59.  21M 

2、qt-embedded-linux的安裝

(1)下載源碼包,解壓;

下載開源嵌入式版本的網(wǎng)址:http://download.qtsoftware.com/qt/source/常用官網(wǎng)

qt news:http://www.qtsoftware.com/about/news

qt downloads:http://www.qtsoftware.com/downloads

qt Quarterly:http://doc.trolltech.com/qq/

qt bugs:http://www.qtsoftware.com/developer/task-tracker

qt Supported Platforms:http://doc.trolltech.com/supported-platforms.html

qt Version Changes :http://www.qtsoftware.com/developer/changes

qt books: http://www.qtsoftware.com/developer/books   

#p#

(2)建立支持庫

通過./configure來設(shè)置,主要配置可以通過--help來獲得幫助;之后用make命令,然后用make install 命令。將庫安裝到指定的路徑下面。其中的設(shè)置包括指定安裝的路徑;未配置的話,默認的路徑是/usr/local/Trolltech/QtEmbedded-4.5.0;

(3)設(shè)置環(huán)境變量

為了能夠使用Qt for Embedded Linux,  必須導(dǎo)出的PATH變量有qmake, moc 以及其他Qt for Embedded Linux 的工具, 以及LD_LIBRARY_PATH 必須導(dǎo)出。例如:    PATH=/usr/local/Trolltech/QtEmbedded-4.5.0/bin:$PATH

  1. export PATH 

(4)建立虛擬的frambuffer。

建立虛擬的frambuffer,需要安裝X11 Platforms .

3、嵌入式linux版本的qt環(huán)境變量

POINTERCAL_FILE:指定文件包含的數(shù)據(jù),用來校準觸摸筆設(shè)備。同時可以參考QWSCalibratedMouseHandler and Qt for Embedded Linux Pointer Handling.

QT_ONSCREEN_PAINT:如果定義了的話,可以用來將控件顯示在屏幕上。如果沒有其他控件在同一個區(qū)域的話,該設(shè)備響應(yīng)的區(qū)域?qū)⒉粫S著屏幕設(shè)備驅(qū)動的改變而改變。設(shè)置這個環(huán)境變量相當于在控件中應(yīng)用程序中設(shè)置Qt::WA_PaintOnScreen。

QWS_SW_CURSOR:如果定義了的話,軟件鼠標的光標將一直是可用的。(即使使用硬件加速驅(qū)動器來支持硬件光標)

QWS_DISPLAY:指定顯示形式和framebuffer.例如:export QWS_DISPLAY=[:]...[:]

QWS_SIZE:指定嵌入式linux qt窗口在屏幕上的大小。export QWS_SIZE=x

QWS_MOUSE_PROTO:指定觸摸設(shè)備。 export QWS_MOUSE_PROTO=[:],參數(shù)可以是MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy. Tslib and keys。/dev/mouse 指的是鼠標設(shè)備,  /dev/ts for touch panels。

QWS_KEYBOARD為輸入設(shè)備指定輸入設(shè)備和驅(qū)動。比如:export QWS_KEYBOARD=[:]。參數(shù)可以是SL5000, Yopy, VR41xx, TTY, USB and keys,指定的是一個標準設(shè)備。比如:/dev/tty0。

4、在嵌入式linux上運行qt程序

任何嵌入式linux應(yīng)用程序可以通過構(gòu)建QApplication 對象QApplication::GuiServer的格式,被構(gòu)建為服務(wù)server application?;蛘咄ㄟ^-qws命令行選項的方式。本文當假設(shè)用The Virtual Framebuffer 或者嵌入式linux的VNC協(xié)議,或者正確配置的Linux framebuffer。而且沒有服務(wù)進程在運行??梢允褂玫娘@示方式有:

  1. Using a Single Display 

單顯示,運行這種顯示方式,改變Linux console,而且選擇一個應(yīng)用來運行。它要求在安裝過程中,環(huán)境變量是可用的。它要求指定的硬件設(shè)備驅(qū)動必須工作正常。比如:

  1. cd path/to/QtEmbedded/demos/textedit  
  2. ./textedit -qws  
  3. * Using Multiple Displays 

linux同時也是支持多設(shè)備顯示。有兩種方式可以完成。當在運行多服務(wù)程序的時候,顯示屏的驅(qū)動(以及數(shù)量)必須為每一個程序進行指定。用-display命令行或者QWS_DISPLAY 來指定。比如:

  1. ./myfirstserverapplication -qws -display "transformed:rot90:1"  
  2. ./mysecondserverapplication -qws -display "QVFb:2" 

需要注意的是,必須指定一個顯示設(shè)備,在開始客戶端程序的時候。比如:./myclientapplication -display "QVFb:2"。在程序運行的時候,沒有辦法將一個客戶端程序從一個顯示移動到另一個顯示。用多顯示屏驅(qū)動,另一方面,應(yīng)用程序可以方便的在兩個不同類型的顯示屏之間切換。多屏幕顯示可以用-display命令行參數(shù)來指定 或者通過設(shè)置QWS_DISPLAY環(huán)境變量比如: ./myserverapplication -qws -display "Multi: QVFb:0   QVFb:1:offset=0,0 VNC:offset=640,0 :2"

  1. * Command Line Options 

命令行選項

#p#

5、移植qt在嵌入式linux的應(yīng)用

移植過程和移植到x11平臺上的差別不大,遵守通用的移植過程。然后還包括幾個方面:字體庫移植,設(shè)置環(huán)境變量以及Framebuffer的支持。

字體庫的支持:是在qt的/lib/fonts目錄下。由于程序運行的時候是到這個文件夾下面來調(diào)用,因此需要將字體庫復(fù)制到這個目錄下。

環(huán)境變量的設(shè)置:通常情況下,與默認的環(huán)境變量不同,因此需要設(shè)置的有QWS_MOUSE_PROTO, QWS_KEYBOARD 以及 QWS_DISPLAY,用來指定鼠標、鍵盤以及顯示設(shè)備管理。在./configure 的時候需要加入的選項是-qt-kbd- and -qt-mouse- ,這樣才能使能這些設(shè)備驅(qū)動。但是還需要指定一個具體的設(shè)備,因此需要通過設(shè)置環(huán)境變量來完成。

framebuffer的支持:沒有特殊需求的情況下,要求在目標設(shè)備上使能framebuffer。Linux framebuffer在標準設(shè)置情況下是使能的。

6、嵌入式linuxqt 顯示管理

當需要顯示的時候,默認的動作是每一個嵌入式linux的客戶端將 需要的顯示的色調(diào)存放在內(nèi)存中,然后服務(wù)端將相關(guān)的數(shù)據(jù)從內(nèi)存在中送到顯示屏上。服務(wù)端用顯示屏驅(qū)動copy內(nèi)存中的內(nèi)容到顯示屏上顯示。顯示屏的驅(qū)動是在服務(wù)端應(yīng)用加載的時候運行的,用的是qt的插件系統(tǒng)。常用的方式有:可用的驅(qū)動;指定一個驅(qū)動;子驅(qū)動和多驅(qū)動。

Available Drivers可用的驅(qū)動

嵌入式linux的qt提供的驅(qū)動有Linux framebuffer, the virtual framebuffer, transformed screens, VNC servers and multi screens.通過運行./configure 選項來列出可用的驅(qū)動。默認的配置是不加速的Linux framebuffer driver (/dev/fb0) 被打開。其他的設(shè)備驅(qū)動也可以使能或者禁止,通過以下命令行。例如:./configure -qt-gfx-transformed

Specifying a Driver指定一個驅(qū)動

通過設(shè)置環(huán)境變量QWS_DISPLAY來指定一個設(shè)備。比如:格式如下的: export QWS_DISPLAY="[:]... [:]"  可以用的參數(shù)有:LinuxFb, QVFb, VNC, Transformed, Multi and keys identifying custom drivers。參數(shù)的被用來分辨用相同驅(qū)動的屏幕,而且使能多顯示。如下的表格用來指定驅(qū)動。環(huán)境變量的QWS_DISPLAY也可以通過-display來設(shè)置。比如: myApplication -display "[:]...  [:]"

Subdrivers and Multiple Drivers子驅(qū)動和多驅(qū)動

VNC, Transformed 和Multi screen drivers取決于子驅(qū)動。通用的語法是: export QWS_DISPLAY="[:][:]...[ :]"至于子驅(qū)動,在每個子驅(qū)動之間加上空間是很重要的,在顯示設(shè)備前加上用來分開各個驅(qū)動和顯示設(shè)備。注意的是多屏幕驅(qū)動可以擁有多個子設(shè)備驅(qū)動,比如: export QWS_DISPLAY="Multi: QVFb:0 QVFb:offset=640,0:1 :2"注意的是:VNC screen driver在沒有指定屏幕驅(qū)動的情況下,默認的是虛擬屏幕驅(qū)動。在這種情況下,VNC driver有一些額外的參數(shù)來指定大小的位寬,參數(shù)有:    * size=  * depth=   * mmHeight=

* mmWidth= 。例如:export QWS_DISPLAY="VNC:size=720x480:depth=32"。例如運行VNC屏幕驅(qū)動在Linux framebuffer driver的情況下,則:export QWS_DISPLAY="VNC:LinuxFb"

7、輸入設(shè)備鍵盤和鼠標的設(shè)置與管理

當運行一個Qt for Embedded Linux應(yīng)用程序的時候,不管是作為一個服務(wù)還是連接到另一個服務(wù),當它開始運行的時候,鼠標驅(qū)動被服務(wù)的應(yīng)用加載,用qt的plugin system。 在配置qt的時候通過選項來選擇支持的鼠標以及鍵盤設(shè)備,同時測試可用的設(shè)備。

通過 ./configure -help 查看可用的設(shè)備,配置時候默認的是PC的鼠標驅(qū)動。如果是自己添加一個設(shè)備,比如觸摸屏,則需要創(chuàng)建一個QWSCalibratedMouseHandler subclass來完成校驗功能。若提供的pc的鼠標被使能,Qt for Embedded Linux將會自動探測所支持的一種鼠標設(shè)備,這個設(shè)備是在/dev/psaux 或者 /dev/ttyS的一種。如果多種類型的都檢測到的話,則多種同時支持。需要注意的是,Qt for Embedded Linux 不支持自動檢測觸摸屏設(shè)備,因此需要指定使用的是哪一種。

要設(shè)置環(huán)境變量QWS_MOUSE_PROTO ,例如:export QWS_MOUSE_PROTO=[:],其中的參數(shù)可以是MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy, Tslib and keys,driver specific options是一個標準設(shè)備,比如:dev/mouse,觸摸屏的是/dev/ts。多鼠標可以用下列方式來指定。

  1. export QWS_MOUSE_PROTO="[:]  
  2.         [:]  
  3.         [:]" 

需要注意的是:Vr41xx 驅(qū)動有兩個可選的參數(shù):press=來定義單擊的時間(默認值是750);filter= 指定的是濾波長度。用于慮掉噪聲。比如:

  1. export QWS_MOUSE_PROTO="Vr41xx:press=500:/dev/misc/ts" 

對于The Tslib Mouse Driver是一個繼承QWSCalibratedMouseHandler的類,在產(chǎn)生鼠標事件的時候,提供校驗和濾波的功能,用于使用同一的觸摸屏的庫。為了使用鼠標,必須編譯的選項是-qt-mouse-tslib。此外,tslib的頭文件和庫也要在build的環(huán)境變量中指出來。tslib 的源碼可以在http://tslib.berlios.de. 下載。通過-L 和-I 來指定庫和頭文件的位置。比如: ./configure  -L -I 。 為了保證能夠使用鼠標,tslib必須正確的安裝在目標機上。包括提供一個ts.conf 配置文件和設(shè)置必要的環(huán)境變量。ts.conf包括兩行:內(nèi)容是: module_raw input

module linear在make Qt for Embedded Linux 時候特別指定tslib 鼠句柄,設(shè)置環(huán)境變量QWS_MOUSE_PROTO ??赡艹霈F(xiàn)問題的地方是設(shè)備文件和文件權(quán)限兩個方面。為了保證能夠正確的使用設(shè)備文件,第一步,先測試一下設(shè)備文件是否有輸出。比如:如果指定的鼠標設(shè)備驅(qū)動是:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,然后檢查設(shè)備的輸出,通過在控制臺上敲: cat /dev/input/mouse0 | hexdump,移動鼠標后,如果可以在控制臺上看見輸出,表示能夠正確的使用設(shè)備,否則要重新連接設(shè)備。

對于設(shè)備的讀寫權(quán)限,一般要求對設(shè)備至少有讀權(quán)限。比如:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,那么應(yīng)該將該設(shè)備的權(quán)限設(shè)置為chmod a+rw /dev/input/mouse0。如果設(shè)備文件符號連接到另一個文件的話,必須改變相關(guān)文件的屬性。

小結(jié):深度解析 Qt Eembedded Linux移植要點的內(nèi)容介紹完了,希望本文對你有所幫助。如果需要更多的資料,請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-01 13:15:50

Ubuntu QT Eembedded

2011-06-24 13:08:34

Qt Qt 4.5.3 移植

2010-01-28 13:50:03

Android移植

2011-06-27 09:15:21

QT Creator

2011-07-01 14:39:08

Qt Quick

2011-06-13 15:57:26

linux QT QTOPIA

2011-06-30 16:08:05

Qt 字庫 QPF

2011-06-30 15:51:39

2011-06-09 14:56:53

QT 編譯

2011-06-13 11:24:55

QT MPlayer 移植

2012-07-06 15:23:28

Linux集群

2009-12-24 14:02:57

Linux集群技術(shù)

2011-06-16 15:17:16

2011-06-22 16:50:09

Qt 進程 通信機制

2011-08-12 13:53:00

IOS框架

2011-06-13 11:07:22

QT 移植

2011-06-21 14:01:07

QT 界面庫 Embedded

2009-10-14 10:07:18

綜合布線系統(tǒng)測試

2011-06-21 18:02:14

Qt 動態(tài) 鏈接庫

2011-06-21 15:48:41

點贊
收藏

51CTO技術(shù)棧公眾號