日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Ubuntu下嵌入式Qt开发环境配置全攻略

發布時間:2025/6/15 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu下嵌入式Qt开发环境配置全攻略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文以友善之臂的Mini6410嵌入式開發板為目標板,介紹ubuntu 12.04系統下,配置嵌入式Qt開發工具的過程。本文中介紹的工具、大部分步驟和腳本來自開發板附帶資料光盤,但其默認配置環境為老舊的Fedora 9.0,在ubuntu中配置過程已需要修正。

一、背景

????眾所周知Qt是一個跨平臺的開發工具,與本文相關的分支有3個,分別是Linux下的Qt桌面版(基于X Window),嵌入式桌面環境QtopiaQt Extended)和嵌入式基礎類庫Qt Embedded

????嵌入式桌面版擁有集成開發工具Qt Creator,方便進行Qt程序的設計,默認配置用于開發桌面程序,進行交叉編譯設置(有時間待后文詳述)后,可以直接編譯嵌入式程序。

????????Qt Embedded也稱Qt/E,是運行于嵌入式LinuxQt基礎類庫,目前最高版本為4.8(不確定)。它的圖形界面直接工作于Frame Buffer上,繞過了窗口管理系統,具有較高的效率,適于嵌入式環境。

????????Qtopia是一個嵌入式桌面環境,以Qt Embedded(在某些版本中稱Qtopia Core)為基礎,在后期改名為Qt Extended。它提擁有一個桌面,并供了手機/PDA中常用的基本功能軟件(如電話本等等),在4.4.3后官方停止開發(或改由開源社區維護)。

????????不同的開發目標應當選擇不同的開發工具和環境,如果讀者不開發桌面程序,也不需要Qt Creator(自己寫makefile),可以不用安裝桌面版,但裝上對后續配置還是有一定方便作用的。

??? 對嵌入式開發者來說,如果僅僅開發單獨的圖形界面程序,不需要嵌入式桌面的話,只使用Qt/E即可,沒必要使用過時的Qtopia

????????友善之臂開發板默認的Qtopia環境是2.2,已經與4.xQt/E庫不兼容,除了演示自帶程序外,對開發而言幾乎不堪用。開發板還提供了Qt Extended 4.4.3,但這個環境提供的是一個諾基亞功能機的界面,基本上也只能供學習研究使用了。所以建議讀者,如果不是有直接針對Qtopia的開發需求,學習內容以Qt/E為主比較好,嵌入式桌面開發,不如交給Android去做。

????????同樣是開發圖形界面程序,QtAndroid兩種工具各有千秋。Android的優點是界面比較適合手機等移動終端的操作習慣,虛擬機對底層環境隔離比較充分,程序開發運行不用考慮各種不同的硬件和操作系統版本,不需要麻煩的配置,同時對Android原生支持的硬件(比如GPS)開發也比較容易。對一般應用程序開發而言,Android省力省心。但Android體積比較龐大,對系統要求較高,不少低端開發板跑起來非常吃力。Qt則正好相反,圖形界面傾向于PC風格,與操作系統結合比較緊密,方便訪問和管理眾多設備,對系統要求較低。比如讀寫串口在Qt中輕而易舉,使用Android開發就要用NDK庫輔助,配置開發反而相當艱深。所以可以說Android是面向特殊的嵌入式環境——手機的專業快速開發工具,而Qt則是面向一般(復雜)嵌入式環境的通用工具。如果開發中不大與硬件打交道,可能Android更合適,反之不如選擇Qt

????????附帶說一句,現在Qt也有了for Android的版本,不過筆者以它適用于兩類人:一類是擁有大把Qt代碼想在Android環境中用,另一類是想用Android但不會也不想學JavaAndroid?API。如果不是上述兩類,筆者以為就基本上沒必要研究這種非驢非馬的東西。

二、準備工作

????注意要在32Ubuntu系統中進行配置,由于版本沖突多如牛毛,不要嘗試64位系統。Qt開發環境需要不少工具包作為基礎,有些可能是系統自帶的,也有些可能是筆者先前配置系統時順帶安裝的,讀者可以參考推薦閱讀中的系統配置過程。

????可通過以下鏈接下載安裝包或源碼包,或從友善之臂提供的資料光盤中查找(SDKx86-qte包中,不過版本為2010.01):

??????????arm-linux-gcc-4.5.1-v6-vfp-20101103.tgzARM交叉編譯器)

??????????arm-qte-4.7.0-20101105.tar.gzARM上的Qt/E庫)

??????????x86-qte-4.6.1-20100201.tar.gzPC上運行的Qt/E模擬器)

??????????arm-qt-extended-4.4.3-20101105.tgzARM上運行的Qtopia

??????????x86-qt-extended-4.4.3-20101003.tgzPC上運行的Qtopia模擬器)

??????????qt-sdk-linux-x86-opensource-2010.05.1.binQt SDK開發環境)

????????x86版本的Qt用于在PC上仿真運行為ARM開發的Qt程序,需要虛擬framebuffer工具qvfb,而這個工具的源碼正好由SDK提供了。

????????Qt/E移植到開發板上還需要tslib庫(用于觸摸屏校正),需要使用版本控制工具git下載,如需要應先安裝git

????sudo apt-get install git

????然后將源碼目錄下載至當前目錄:

????git clone https://github.com/kergoth/tslib

????為編譯tslib庫,還需要安裝若干工具:

????sudo apt-get install autoconf automake libtool

????若不安裝,編譯時會出現錯誤:

????????autoreconf: not found

????為編譯Qt還要安裝圖形和視頻開發包:

????sudo apt-get install xorg-dev

????sudo apt-get install libv4l-dev

????安裝后一個包時,會報告依賴關系錯誤,在Ubuntu軟件中心中搜索libv4lconvert0libv4l-0卸載(先卸哪個都一樣,兩個會被一起卸載)后再運行上條命令。不要用apt卸載,它會要求同時卸掉幾十個包。

????若不安裝上述第一個包,會出現錯誤:

????????X11/extensions/XTest.hNo such file or directory(沒有那個文件或目錄)

????不安裝后一個,會出現錯誤:

????????linux/videodev.h: No such file or directory(沒有那個文件或目錄)

????安裝libv4l-dev后,還需要將頭文件路徑進行配置:

????sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/
????videodev.h

????如果以前做過編譯內核或其他開發配置工作,系統可能已經自帶了一套Qt工具集,與本文配置對象不兼容(很多人就是卡在這里了),應當刪除:

????sudo rm /usr/bin/qmake

????sudo rm /usr/bin/qmake-qt4

????否則編譯Qtopia時會出現錯誤:

????????Bootstrap QBuild: .. FAIL

????網上很多介紹刪除Qt Creator可以解決,其實是錯的。

????根據Qt安裝提示,還應該檢查以下包是否安裝:

????????libglib2.0-dev

????????libSM-dev

????????libxrender-dev

????????libfontconfig1-dev

????????libxext-dev

????????libgl-mesa-dev

????????libglu-mesa-dev

????在Ubuntu?12.04中,除第一個外,其他包應該都是最新版,第一個包因依賴關系沖突無法安裝,好在不影響編譯和運行。

????注意:在拷貝粘貼命令時,其中某些字符可能被不同的編輯環境改變,特別是空格和符號,如命令執行出錯,可以考慮在Linux命令行下刪除空格和符號后手工輸入一次。

三、安裝與編譯

1.?安裝SDK

????進入sdk所在目錄,在命令行中運行:

????./qt-sdk-linux-x86-opensource-2010.05.1.bin

????然后會出現圖形界面安裝,按提示下一步即可,程序安裝目錄為:

????/opt/qtsdk-2010.05

2.?安裝arm編譯器

????進入編譯器壓縮包所在目錄,執行命令:

????tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /

????注意文件名后的-C是參數,再后面的"/"表示解壓目錄。執行完之后會將編譯器安裝在/opt/FriendlyARM/toolschain/4.5.1目錄下。

????安裝后需要將編譯器路徑加入環境變量中,執行命令:

????gedit ~/.bashrc

????在文件最后加入一行:

????export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

3.?編譯tslib

????進入tslib目錄,依次執行:

????./autogen.sh

????./configure --host=arm-linux --prefix="自定義安裝目錄xxx"

????make

????sudo make install

????????configure命令中--prefix參數用來指定tslib的安裝目錄,例如"/home/xxx/lib/tslib",也可以不帶此參數,則安裝到默認目錄/usr/local/tslib下,下文以"/xxx"指代tslib安裝目錄,請讀者注意。

4.?編譯x86-qte-4.6.1

????解壓x86-qte-4.6.1壓縮包包,可以使用圖形界面右鍵菜單解壓,也可使用命令:

????gzip -dc x86-qte-4.6.1-20100201.tar.gz | tar -xvf -

????友善之臂在壓縮包中提供了編譯腳本build-all,腳本開頭會將先前的安裝配置目錄刪除,對初次配置沒有必要,且腳本中的命令參數與前面安裝的SDK版本不同,建議進入解壓目錄后,將以下幾步保存為腳本執行或依次輸入執行:?????

cd?/opt/qtsdk-2010.05/qt/tools/qvfb/
????/opt/qtsdk-2010.05/qt/bin/qmake?"QT_SOURCE_TREE=/opt/qtsdk-2010.05/qt"
????make
????cd?-?#返回上一個目錄,即解壓目錄
????tar xfvz qt-everywhere-opensource-src-4.6.1.tar.gz
????cd?qt-everywhere-opensource-src-4.6.1
????echo?yes | ./configure -opensource -embedded x86 -xplatform qws/linux-generic-g++ ?-qt-libtiff -qt-libmng -qvfb
????make?
????sudo make install?

????????x86-qte將被安裝在/usr/local/Trolltech/QtEmbedded-4.6.1-i386目錄下。

5.?編譯arm-qte-4.7.0

????解壓arm-qte-4.7.0壓縮包包,進入解壓目錄執行:?

????tar xfvz qt-everywhere-opensource-src-4.7.0.tar.gz
????cd?qt-everywhere-opensource-src-4.7.0
??? echo?yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-pc -no-mouse-linuxtp -no-neon -qt-mouse-tslib -I/xxx/include -L/xxx/lib
??? make?
??? sudo make install
? ? ??上述命令與友善之臂提供的腳本最大不同在configure命令中,一是參數順序不同,二是在-qt-mouse-tslib參數后增加了-I-L兩項給出tslib頭文件和庫文件路徑(/xxxtslib安裝目錄)。這里的編譯過程非常詭異,筆者至今也未明所以然,只能指出如下幾點供讀者參考:

????如不能正確設置tslib路徑,將出現如下錯誤提示:

????????The tslib functionality test failed!

????????You might need to modify the include and library search paths by editing

????????QMAKE_INCDIR and QMAKE_LIBDIR in

????????/源碼包解壓目錄/qt-everywhere-opensource-src-4.7.2/mkspecs/qws/linux-arm-g++.

????正常解決辦法是進入錯誤提示中的路徑,編輯文件qmake.conf加入兩行:

????QMAKE_INCDIR = /xxx/include

????QMAKE_LIBDIR = /xxx/lib

????但詭異錯誤既出,正常辦法多半是無效的,編輯文件后錯誤依舊。也有人建議改上述文件中的編譯器名,但據筆者分析這種方法無道理(篇幅有限不贅),事實也未成功。直接在-qt-mouse-tslib參數后增加-I-L兩項也嘗試了,同樣無效。

????最后在偶然中改變了友善之臂腳本中configure命令參數的順序,,改成本文這個樣子,然后刪除又輸入了幾個空格,編譯就奇跡般的通過了。后來再試,拷貝的命令都不能成功,建議讀者也改改空格碰碰運氣。

????????arm-qte將被安裝在/usr/local/Trolltech/QtEmbedded-4.7.0-arm目錄下。

6.?編譯x86-qtopia-4.4.3

????解壓x86-qt-extended-4.4.3壓縮包,進入解壓目錄,首先執行命令:

????tar xzf qt-extended-opensource-src-4.4.3.tar.gz

????將源碼解壓,在源碼目錄中找到文件:

????qt-extended-4.4.3/src/libraries/qtopia/qphoneprofile.cpp

????將其1026行改為:

????QPhoneProfile::Schedule &QPhoneProfile::Schedule::operator=(const Schedule &other)

????然后將下列命令保存為腳本執行:

mkdir /opt/QtEmbedded-4.4.3-i386

??? export?QTOPIA_DEPOT_PATH=$PWD/qt-extended-4.4.3
??? export?QPEDIR=/opt/QtEmbedded-4.4.3-i386/

??? export?LC_ALL="zh_CN"
??? export?LC_TIME="zh_CN"
??? export?LC_MONETARY="zh_CN"
??? export?LC_ADDRESS="zh_CN"
??? export?LC_TELEPHONE="zh_CN"
??? export?LC_NAME="zh_CN"
??? export?LC_MEASUREMENT="zh_CN"
??? export?LC_IDENTIFICATION="zh_CN"
??? export?LC_NUMERIC="zh_CN"
??? export?LC_PAPER="zh_CN"
??? export?LC_CTYPE="zh_CN"
??? export?LANG="zh_CN"
??? export?LANGUAGE="zh_CN"

??? cd?$QPEDIR
??? echo?yes |?$QTOPIA_DEPOT_PATH/configure -ui-type mobile -release -clean -sound-system oss -build-qt -no-sxe -no-ssl -no-v4l2 -no-vpn -no-phonon -no-libamr -dynamic-rotation -mediaengines cruxus -remove-mediaengine gstreamer,helix -pictureflow -remove-module bluetooth,drm -no-dbus -no-dbusipc -add-displaysize 240x320 -extra-qt-embedded-config?"-qt-freetype -no-webkit -no-dbus -qt-gfx-transformed -qt-gfx-linuxfb"?-extra-qt-config?"-no-webkit"?2>&1 | tee ./qtopiaconfig.log

??? bin/qbuild 2>&1 | tee ./qtopiamake.log
??? bin/qbuild image

????對友善之臂自帶腳本的修改主要有:

????①?按網文說法更改了語言設置,不過似無必要(未詳細考證),編譯輸出的提示中會有亂碼,好在不影響結果。

????②?-sound-system參數值由alsa改為oss,否則會爆出alsa disabled錯誤。

????③?更改了編譯輸出目錄為/opt/QtEmbedded-4.4.3-i386,方便以后使用。

????????2>&1 | tee ./qtopia???.log語句作用是將編譯過程中的輸出信息同時輸出到屏幕和log?文件中。

????編譯成功后,還要從/opt/qtsdk-2010.05/qt/bin目錄下拷貝qvfb文件到/opt/QtEmbedded-4.4.3-i386/sdk/qtopiacore/host/bin目錄下。

7.?編譯arm-qtopia-4.4.3

????????x86-qtopia-4.4.3的編譯安裝比較簡單,友善之臂提供的編譯安裝腳本基本是可用的,筆者只是改了開頭幾個命令:

????#!/bin/bash

??? mkdir /opt/QtEmbedded-4.4.3-arm/

??? export?QTOPIA_DEPOT_PATH=$PWD/qt-extended-4.4.3
??? export?QPEDIR=/opt/QtEmbedded-4.4.3-arm/
??? export?PATH=/opt/FriendlyARM/mini6410/linux/arm-gcc-4.4.1/bin/:$PATH

??? export?LC_CTYPE="en_US"

????從最后一行起,再往后與友善之臂原版的build-all腳本就完全一樣了,修改目的還是將編譯好的程序放在/opt/QtEmbedded-4.4.3-arm/目錄下,方便以后使用。

四、測試編譯結果

????啟動/opt/qtsdk-2010.05/qt/bin目錄下的qfvb程序,然后進入/usr/local/Trolltech/QtEmbedded-4.6.1-i386/demos目錄,任選一個子目錄下的可執行文件,加-qws參數在命令行下執行,如執行成功則說明x86-qte編譯成功。

????要測試x86-qtopia,進入/opt/QtEmbedded-4.4.3-i386目錄,執行:

????./bin/runqtopia

????將顯示出一個諾基亞手機界面。?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Ubuntu下嵌入式Qt开发环境配置全攻略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。