日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

本文以友善之臂的Mini6410嵌入式開發(fā)板為目標(biāo)板,介紹ubuntu 12.04系統(tǒng)下,配置嵌入式Qt開發(fā)工具的過(guò)程。本文中介紹的工具、大部分步驟和腳本來(lái)自開發(fā)板附帶資料光盤,但其默認(rèn)配置環(huán)境為老舊的Fedora 9.0,在ubuntu中配置過(guò)程已需要修正。

一、背景

????眾所周知Qt是一個(gè)跨平臺(tái)的開發(fā)工具,與本文相關(guān)的分支有3個(gè),分別是Linux下的Qt桌面版(基于X Window),嵌入式桌面環(huán)境QtopiaQt Extended)和嵌入式基礎(chǔ)類庫(kù)Qt Embedded

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

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

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

????????不同的開發(fā)目標(biāo)應(yīng)當(dāng)選擇不同的開發(fā)工具和環(huán)境,如果讀者不開發(fā)桌面程序,也不需要Qt Creator(自己寫makefile),可以不用安裝桌面版,但裝上對(duì)后續(xù)配置還是有一定方便作用的。

??? 對(duì)嵌入式開發(fā)者來(lái)說(shuō),如果僅僅開發(fā)單獨(dú)的圖形界面程序,不需要嵌入式桌面的話,只使用Qt/E即可,沒(méi)必要使用過(guò)時(shí)的Qtopia

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

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

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

二、準(zhǔn)備工作

????注意要在32Ubuntu系統(tǒng)中進(jìn)行配置,由于版本沖突多如牛毛,不要嘗試64位系統(tǒng)。Qt開發(fā)環(huán)境需要不少工具包作為基礎(chǔ),有些可能是系統(tǒng)自帶的,也有些可能是筆者先前配置系統(tǒng)時(shí)順帶安裝的,讀者可以參考推薦閱讀中的系統(tǒng)配置過(guò)程。

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

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

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

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

??????????arm-qt-extended-4.4.3-20101105.tgzARM上運(yùn)行的Qtopia

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

??????????qt-sdk-linux-x86-opensource-2010.05.1.binQt SDK開發(fā)環(huán)境)

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

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

????sudo apt-get install git

????然后將源碼目錄下載至當(dāng)前目錄:

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

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

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

????若不安裝,編譯時(shí)會(huì)出現(xiàn)錯(cuò)誤:

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

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

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

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

????安裝后一個(gè)包時(shí),會(huì)報(bào)告依賴關(guān)系錯(cuò)誤,在Ubuntu軟件中心中搜索libv4lconvert0libv4l-0卸載(先卸哪個(gè)都一樣,兩個(gè)會(huì)被一起卸載)后再運(yùn)行上條命令。不要用apt卸載,它會(huì)要求同時(shí)卸掉幾十個(gè)包。

????若不安裝上述第一個(gè)包,會(huì)出現(xiàn)錯(cuò)誤:

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

????不安裝后一個(gè),會(huì)出現(xiàn)錯(cuò)誤:

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

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

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

????如果以前做過(guò)編譯內(nèi)核或其他開發(fā)配置工作,系統(tǒng)可能已經(jīng)自帶了一套Qt工具集,與本文配置對(duì)象不兼容(很多人就是卡在這里了),應(yīng)當(dāng)刪除:

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

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

????否則編譯Qtopia時(shí)會(huì)出現(xiàn)錯(cuò)誤:

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

????網(wǎng)上很多介紹刪除Qt Creator可以解決,其實(shí)是錯(cuò)的。

????根據(jù)Qt安裝提示,還應(yīng)該檢查以下包是否安裝:

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

????????libSM-dev

????????libxrender-dev

????????libfontconfig1-dev

????????libxext-dev

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

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

????在Ubuntu?12.04中,除第一個(gè)外,其他包應(yīng)該都是最新版,第一個(gè)包因依賴關(guān)系沖突無(wú)法安裝,好在不影響編譯和運(yùn)行。

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

三、安裝與編譯

1.?安裝SDK

????進(jìn)入sdk所在目錄,在命令行中運(yùn)行:

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

????然后會(huì)出現(xiàn)圖形界面安裝,按提示下一步即可,程序安裝目錄為:

????/opt/qtsdk-2010.05

2.?安裝arm編譯器

????進(jìn)入編譯器壓縮包所在目錄,執(zhí)行命令:

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

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

????安裝后需要將編譯器路徑加入環(huán)境變量中,執(zhí)行命令:

????gedit ~/.bashrc

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

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

3.?編譯tslib

????進(jìn)入tslib目錄,依次執(zhí)行:

????./autogen.sh

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

????make

????sudo make install

????????configure命令中--prefix參數(shù)用來(lái)指定tslib的安裝目錄,例如"/home/xxx/lib/tslib",也可以不帶此參數(shù),則安裝到默認(rèn)目錄/usr/local/tslib下,下文以"/xxx"指代tslib安裝目錄,請(qǐng)讀者注意。

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,腳本開頭會(huì)將先前的安裝配置目錄刪除,對(duì)初次配置沒(méi)有必要,且腳本中的命令參數(shù)與前面安裝的SDK版本不同,建議進(jìn)入解壓目錄后,將以下幾步保存為腳本執(zhí)行或依次輸入執(zhí)行:?????

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?-?#返回上一個(gè)目錄,即解壓目錄
????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壓縮包包,進(jìn)入解壓目錄執(zhí)行:?

????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命令中,一是參數(shù)順序不同,二是在-qt-mouse-tslib參數(shù)后增加了-I-L兩項(xiàng)給出tslib頭文件和庫(kù)文件路徑(/xxxtslib安裝目錄)。這里的編譯過(guò)程非常詭異,筆者至今也未明所以然,只能指出如下幾點(diǎn)供讀者參考:

????如不能正確設(shè)置tslib路徑,將出現(xiàn)如下錯(cuò)誤提示:

????????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++.

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

????QMAKE_INCDIR = /xxx/include

????QMAKE_LIBDIR = /xxx/lib

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

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

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

6.?編譯x86-qtopia-4.4.3

????解壓x86-qt-extended-4.4.3壓縮包,進(jìn)入解壓目錄,首先執(zhí)行命令:

????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)

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

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

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

????①?按網(wǎng)文說(shuō)法更改了語(yǔ)言設(shè)置,不過(guò)似無(wú)必要(未詳細(xì)考證),編譯輸出的提示中會(huì)有亂碼,好在不影響結(jié)果。

????②?-sound-system參數(shù)值由alsa改為oss,否則會(huì)爆出alsa disabled錯(cuò)誤。

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

????????2>&1 | tee ./qtopia???.log語(yǔ)句作用是將編譯過(guò)程中的輸出信息同時(shí)輸出到屏幕和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的編譯安裝比較簡(jiǎn)單,友善之臂提供的編譯安裝腳本基本是可用的,筆者只是改了開頭幾個(gè)命令:

????#!/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/目錄下,方便以后使用。

四、測(cè)試編譯結(jié)果

????啟動(dòng)/opt/qtsdk-2010.05/qt/bin目錄下的qfvb程序,然后進(jìn)入/usr/local/Trolltech/QtEmbedded-4.6.1-i386/demos目錄,任選一個(gè)子目錄下的可執(zhí)行文件,加-qws參數(shù)在命令行下執(zhí)行,如執(zhí)行成功則說(shuō)明x86-qte編譯成功。

????要測(cè)試x86-qtopia,進(jìn)入/opt/QtEmbedded-4.4.3-i386目錄,執(zhí)行:

????./bin/runqtopia

????將顯示出一個(gè)諾基亞手機(jī)界面。?

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。