成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qtopia 移植實驗過程

移動開發
Qtopia 后來被重新命名為Qt Extended,在2009年3月3日,Nokia決定停止Qt Extended的后續開發,轉而全心投入Qt的產品開發,并逐步會將一部分QtExtended的功能移植到Qt開發框架中。

本文介紹的內容是關于 Qt opia 移植實驗過程,以實驗報告的形式向大家展現內容,方便又很清晰的瀏覽內容。

一、準備工作

了解QT庫的使用

了解QTopia移植步驟

學習如何使用Tslib來構建帶有觸摸屏的GUI系統

二、實驗原理

1、實驗程序介紹

本章重點講述如何利用源代碼一步一步的將Qtopia(一套基于QT的GUI界面)移植到Filesystem中,最終可以在開發板上看到Qtopia運行起來。

2、實驗原理

目前嵌入式Linux的主流GUI系統主要有MiniGUI、Microwindows、OpenGUI、Qt/Embedded,這些GUI在接口定義、體系結構、功能特性存在很大差別,采取的技術路線也有所不同。MiniGUI是建立在比較成熟的圖形引擎之上,開發的重點在于窗口系統,其小巧精致并且盡量與Win32兼容。MicroWindows目前開發的重點在底層的圖形引擎,窗口系統和圖形接口方面功能比較欠缺,與Win32和X Windows窗口系統保持兼容,提供了相對完善的圖形功能。OpenGUI基于一個用匯編實現的x86圖形內核,提供了一個高層的C/C++圖形/窗口接口,它的資源消耗小,可移植性差,不支持多進程。

我們這次的實驗用的就是基于Qt/Embedded,它具有良好的擴展性和眾多優秀的配套工具。

實驗過程中,一共用到4個源代碼包,下面是它們的介紹說明:

Qt/EmbeddedQt/Embedded是一個多平臺的C++圖形用戶界面應用程序框架,其對象容易擴展,可移植性好,支持多個GUI平臺的交互開發。現在,Qt/Embedded被廣泛地應用于各種嵌入式產品和設備中,從消費電器(如智能手機、機頂盒)到工業控制設備(如醫學成像設備、移動信息系統等)。因此本實訓項目選擇Qt/Embedded為系統的GUI。

Qtopia Qtopia 是Trolltech 公司為采用嵌入式Linux 操作系統的消費電子設備而開發的綜合應用平臺, 它基于Qt/Embedded框架,所以在編譯Qtopia之前先要搭建好Qt/Embedded框架。另外Qtopia包含完整的應用層、靈活的用戶界面、窗口操作系統、應用程序啟動程序以及開發框架。

Tslib:在采用觸摸屏的移動終端中,觸摸屏性能的調試是個重要問題之一,因為電磁噪聲的緣故,觸摸屏容易存在點擊不準確、有抖動等問題。Tslib是一個開源的程序,能夠為觸摸屏驅動獲得的采樣提供諸如濾波、去抖、校準等功能,通常作為觸摸屏驅動的適配層,為上層的應用提供了一個統一的接口。

Tmake:tmake是一個很好用的生成和管理makefile的工具,他是由Trolltech這家公司開發的,用perl寫成。

3、移植流程圖

Qt opia 移植實驗過程
圖1 流程示意圖

三、實驗步驟

1、實驗準備

首先需要下載如下資源:

  1. qtopia-free-1.7.0.tar.bz2  
  2. qt-embedded-2.3.7.tar.bz2  
  3. tmake-1.11.tar.gz  
  4. Tslib-1.3.tar.gz 

其次,需要保證能夠正常使用交叉編譯工具鏈,即可以正常使用諸如arm-linux-gcc的命令

解壓這四個壓縮包分別到如下幾個目錄:

  1. qtopia-free-1.7.0.tar.bz2  /work/qtopia-1.7.0  
  2. qt-embedded-2.3.7.tar.bz2  /work/qt-2.3.7  
  3. tmake-1.11.tar.gz    /work/tmake-1.11  
  4. Tslib-1.3.tar.gz     /work/tslib-1.3 

2、設置環境變量

在Shell中輸入下了命令,也可以做一個腳本文件來執行

  1. export export QTDIR=/work/qt-2.3.7  
  2. export export QPEDIR=/work/qtopia-1.7.0  
  3. export LD_LIBRARY_PATH=/work/qt-2.3.7/lib:$LD_LIBRARY_PATH  
  4. export TMAKEDIR=/work/tmake-1.11  
  5. export TMAKEPATH=/work/tmake-1.11/lib/qws/linux-arm-g++  
  6. export PATH=/work/tmake-1.11/bin:$PATH 

3、編譯Tslib 1.3

在Shell界面輸入如下命令,假設當前目錄是”/work”

  1. [root@emdoor work]#cd tslib-1.3  
  2. [root@emdoor tslib-1.3]#export CC=arm-linux-gcc         //選擇編譯工具鏈  
  3. [root@emdoor tslib-1.3]#./autogen.sh  
  4. [root@emdoor tslib-1.3]#./configure --host=arm-linux       //生成ARM版本的Tslib  
  5. [root@emdoor tslib-1.3]#make  
  6. [root@emdoor tslib-1.3]#cp -a src/.libs/*  ../qt-2.3.7/lib/  
  7. [root@emdoor tslib-1.3]$cp -a plugins/.libs/*.so  ../qt-2.3.7/lib/     
  8.                                        //拷貝生成的庫文件到QT/E源碼中  
  9. [root@emdoor tslib-1.3]$cp -a src/*.h  ../qt-2.3.7/include   //拷貝文件到QT/E源碼中 

這樣我們就生成Tslib的庫文件與鏈接文件了

4、編譯QT/E 2.3.7

由于我們最終要編譯的是qtopia 1.7.0,而它對應的QT/E庫文件是2.3.7,所以我們需要交叉編譯一個它專用的QT/E框架,即庫文件

(1)首先即要確保步驟2已經完成,并且生成的庫文件都是ARM架構的,可以用下列代碼測試一下:

  1. [root@emdoor tslib-1.3]$ file  /work/qt-2.3.7/lib/libts*     //反饋信息中會有ARM字樣 

(2)為了能在Qt/E中順利使用觸摸屏,還需要做如下修改

修改configs/ linux-arm-g++-shared的第41行,紅色部分為新添加內容,表示在編譯過程中,調用libts.so庫文件,即導入了我們步驟二生成的觸摸屏驅動程序
SYSCONF_LIBS  = -lm –lts

從實驗源代碼中的補丁目錄,找到一個名字為“qwsmouse_qws.cpp”替換掉qt-2.3.7目錄下對應的同名文件(src/kernel目錄內),由于該代碼修改的內容較多,筆者在此就不一一描述,該修改主要將tslib的調用方式嵌入到Qt/E中,感興趣的讀者可以自行解讀該代碼。

(3)進入源代碼目錄,使用configure進行配置

  1. [root@emdoor qt-2.3.7]$ cd $QTDIR  
  2. [root@emdoor qt-2.3.7]$ cp /work/qtopia-1.7.0/src/qt/qconfig-qpe.h src/tools/  
  3. [root@emdoor qt-2.3.7]$ ./configure  -xplatform linux-arm-g++ -qconfig qpe 

注意:qtopia 1.7.0針對QT/E 2.3.7預設了一個配置腳本qconfig-qpe.h,所以要將其拷貝到src/tools目錄下,然后在configure中就可以用”—qconfig”調用了

(4)隨后QT的配置過程中會跳出幾個問題,回答如下:

  1. Q:… license?    A:yes  
  2. Q:color depth?    A:16   
  3. Q:Virtual Framebuffer?  A:no 

(5)***就直接編譯了:

[root@emdoor qt-2.3.7]$ make sub-src       //sub-src表示僅編譯src目錄下的內容

5、編譯Qtopia 1.7.0

  1. [root@emdoor qt-2.3.7]$ cd $QPEDIR  
  2. [root@emdoor qtopia-1.7.0]$ ./configure  -xplatform linux-arm-g++  
  3. [root@emdoor qtopia-1.7.0]$ make 

這樣就會在當前目錄生成整個GUI界面的所有可執行文件和配置文件

6、壓縮CodeSize

生成的系統有點冗余,可以用arm-linux-strip工具將多余的調試信息剝離開,減小Qtopia的體積:

  1. [root@emdoor qtopia-1.7.0]$ arm-linux-strip -R .note -R .comment bin/*  
  2. [root@emdoor qtopia-1.7.0]$ arm-linux-strip -R .note -R .comment plugins/*/*  
  3. [root@emdoor qtopia-1.7.0]$ arm-linux-strip -R .note -R .comment $QTDIR/lib/libqte.so* $QTDIR/lib/libqpe.so* 

7、構建Run-time目錄

由于Otopia目錄下還存在的源代碼之類的文件,而且它的運行離不開QT/E的共享庫文件,所以我們新建一個qpe目錄,然后把Qtopia給放進去:

  1. [root@emdoor qtopia-1.7.0]$ mkdir ../qpe  
  2. [root@emdoor qtopia-1.7.0]$ cd ../qpe  
  3. [root@emdoor qpe]$ cp -aR ../qt-2.3.7/lib/ ./  
  4. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/lib/* ./lib  
  5. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/apps ./  
  6. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/bin ./  
  7. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/plugins ./  
  8. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/i18n ./  
  9. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/pics . /  
  10. [root@emdoor qpe]$ cp -aR ../qtopia-1.7.0/etc . /  
  11. [root@emdoor qpe]$ cp ../tslib/etc/ts.conf  /qpe/etc  
  12. [root@emdoor qpe]$ cp ../tslib/tests/.libs/ts.calibrate  /qpe/bin  

8、整合入filesystem

(1)進入由上一章節生成的busybox的Filesystem,將qpe目錄拷貝到Filesystem中的usr目錄下,即目標板運行起來時,qpe的絕對路徑是/usr/qpe

(2)新建一個Qtopia運行腳本qpe.sh ,具體代碼如下:

  1. /usr/qpe/qpe.sh  
  2. export QTDIR=/usr/qpe   
  3. export QPEDIR=/usr/qpe  
  4. export LANG=zh_CN 
  5. export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH  
  6. export QT_TSLIBDIR=/usr/qpe/lib  
  7. export TSLIB_CONFFILE=/usr/qpe/etc/ts.conf  
  8. export TSLIB_PLUGINDIR=/usr/qpe/lib  
  9. export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/ucb1x00  
  10. export KDEDIR=/usr/qpe  
  11. cd /usr/qpe/bin  
  12. ./ts_calibrate  
  13. ./qpe -qws 

(3)修改etc目錄下的inittab文件,在該文件的末尾加入如下代碼:

  1. x:5:once:/usr/qpe/qpe.sh &> /dev/null 

(4)根據busybox實驗的步驟進行格式化和運行即可

小結:Qt opia 移植實驗過程的內容介紹完了,希望對你有所幫助。關于Qt/Embedded,它是一個多平臺的C++圖形用戶界面應用程序框架,其對象容易擴展,可移植性好,支持多個GUI平臺的交互開發。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-13 15:57:26

linux QT QTOPIA

2011-06-20 10:40:03

Ubuntu Qtopia

2011-06-23 18:16:59

Qt Qtopia

2011-06-24 13:08:34

Qt Qt 4.5.3 移植

2011-07-05 16:31:17

Qtopia 交叉編譯

2022-06-21 11:30:22

littleVGL鴻蒙

2011-06-20 09:06:05

Qt Qtopia

2011-06-29 09:20:41

Qt Embedded Qtopia

2011-06-20 09:26:38

Linux qtopia QT

2017-07-04 22:55:09

存儲過程數據庫存儲過程移植

2011-06-20 10:27:24

Mini2440 Qtopia Qt

2010-03-01 15:07:02

Linux交換分區

2025-06-26 02:45:00

UbootSoC系統

2011-06-13 11:24:55

QT MPlayer 移植

2013-11-14 11:30:10

androidrom

2023-02-06 16:21:48

2015-05-05 13:57:12

AndroidWindows

2011-06-13 11:07:22

QT 移植

2013-02-09 10:04:03

容錯服務器

2011-06-14 14:18:08

可移植性測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品在线免费 | 久久99精品久久久久婷婷 | 亚洲精品日本 | 国产精品麻 | 免费午夜视频在线观看 | 黄色片在线免费看 | 日日日操 | 成人做爰9片免费看网站 | 国产精品免费视频一区 | 日韩一区二区三区在线 | 精品网站999 | 日本视频一区二区三区 | 亚洲男人天堂 | 午夜视频免费在线观看 | 亚洲精品一区中文字幕乱码 | 亚洲 自拍 另类 欧美 丝袜 | av影音| 国产高清在线观看 | www.日韩欧美 | 国产精品一区二区久久 | 在线一区二区三区 | 欧美一区二区三区视频在线 | 欧美自拍第一页 | 久久精品小视频 | 久久综合一区二区 | 黄色网址在线播放 | 宅男噜噜噜66一区二区 | 国产精品免费看 | 成人免费在线观看视频 | 99久久亚洲 | 日韩精品人成在线播放 | 亚洲品质自拍视频网站 | 日韩中文字幕一区 | 国产成人在线看 | 欧美视频三区 | 电影午夜精品一区二区三区 | 一区二区视屏 | 亚洲高清在线视频 | 亚洲一区二区三区免费观看 | 亚洲国产精品99久久久久久久久 | 色偷偷人人澡人人爽人人模 |