新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > linux基礎(chǔ)復(fù)習(xí)(5)建立linux開(kāi)發(fā)環(huán)境

linux基礎(chǔ)復(fù)習(xí)(5)建立linux開(kāi)發(fā)環(huán)境

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò) 收藏

# mv qt-2.3.2 qt-x11

# cd x86-qtopia

# tar zxvf ../tmake-1.11.tar.gz

# tar zxvf ../qt-embedded-2.3.7.tar.gz

# tar zxvf ../qtopia-free-1.7.0.tar.gz

# tar zxvf ../e2fsprogs-1.35.tar.gz

# mv tmake-1.11 tmake

# mv qt-2.3.7/ qt

# mv qtopia-free-1.7.0 qtopia

# mv e2fsprogs-1.35 e2fsprogs

# cp x86-qtopia arm-qtopia -rf

記住,用戶(hù)目錄下的x86-qtopia目錄是PC機(jī)上編譯的工作環(huán)境,arm-qtopia是arm平臺(tái)的交叉編譯工作環(huán)境,qt-x11是兩者公用的。

接下來(lái)還必須編譯qt-x11,主要是為了編譯生成其中的qtdesigner和qvfb。qvfb程序在系統(tǒng)中并未安裝,需要我們自己編譯。qtdesigner是和qt庫(kù)的版本是相關(guān)的,當(dāng)我們使用PC機(jī)上和QTE版本不符的qtdesigner時(shí),可能在PC機(jī)上的qt-x11能使用的控件在QTE上并未實(shí)現(xiàn),導(dǎo)致應(yīng)用程序編譯不成功。所以,我們使用2.3版本的QTE時(shí),必須使用相同版本的qt-x11編譯生成的qtdesigner和qvfb。

# cd ~/qt-x11

# export QTDIR=$PWD

# echo yes | ./configure -static -no-xft -no-opengl -no-sm

# make -C src/moc

# cp src/moc/moc bin

# make -C src

# make -C tools/designer

# make -C tools/qvfb

# cp tools/qvfb/qvfb bin

# strip bin/uic bin/moc bin/designer bin/qvfb

# cp qt-x11/bin/* qt/bin -f

# cp qt-x11/bin/* qt/bin -f

3. PC平臺(tái)編譯

編譯之前做一下準(zhǔn)備工作:打開(kāi)一個(gè)控制臺(tái)之后設(shè)置環(huán)境變量。

# cd ~/x86-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

3.1 編譯QTE

# cd $QTDIR

# cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f

# (echo yes ; echo no) | ./configure -platform linux-generic-g++ -qconfig qpe -depths 16,24,32

# make -C src clean

# make -C src

看一下$QTDIR目錄下是否已經(jīng)有了qt的庫(kù)了?

3.2 編譯QTOPIA

# cd $QPEDIR/src

# ./configure

# make clean

# make

3.3 測(cè)試QTOPIA

激動(dòng)的時(shí)刻來(lái)了,如果這個(gè)步驟成功將意味著可以做應(yīng)用開(kāi)發(fā)了。

# cd ~/x86-qtopia

# mkdir dist

# cd dist

# cp -af ../qt/lib/ .

# cp -af ../qtopia/apps .

# cp -af ../qtopia/bin .

# cp -af ../qtopia/plugins .

# cp -af ../qtopia/i18n .

# cp -af ../qtopia/pics .

因?yàn)镾ecurity.png有點(diǎn)錯(cuò)誤,所以必須進(jìn)行一下操作:

# cd pics

# pngtopnm Security.png>a.pnm

# pnmtopng a.pnm>Security.png

因?yàn)閝pe運(yùn)行的時(shí)候,當(dāng)前目錄必須是$QTDIR/bin,所以不能在$QTDIR目錄下執(zhí)行bin/qpe來(lái)運(yùn)行。

# export QTDIR=~/x86-qtopia/qt

# cd $QTDIR/bin

# ./qvfb

# ./qpe

看到qpe在qvfb中的界面了嗎?我看到了~!

4. 目標(biāo)平臺(tái)交叉編譯

與PC機(jī)上的編譯一樣,打開(kāi)一個(gè)控制臺(tái)之后需要設(shè)置環(huán)境變量。

# cd ~/arm-qtopia

# export QTDIR=$PWD/qt

# export QPEDIR=$PWD/qtopia

# export TMAKEDIR=$PWD/tmake

# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

# export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

4.1 交叉編譯QT

4.2 交叉編譯QTOPIA

5. 移植QT中的相關(guān)設(shè)備接口

5.1 鼠標(biāo)

5.2 觸摸屏

6. 移植QTOPIA中的相關(guān)設(shè)備接口

6.1 電源管理設(shè)備

7. 編寫(xiě)QT程序并移植

8. 編寫(xiě)QTOPIA程序并移植

X. tips

@ 移植的時(shí)候編譯器的版本很重要.qte-2.3.7在redhat9的3.2編譯器下工作很正常,但在Fedora4的gcc-3.4.2編譯器下編譯卻不成功.根據(jù)測(cè)試,PC平臺(tái)上使用gcc- 3.2可以順利編譯,arm平臺(tái)上使用gcc-2.95.2可以順利通過(guò)(gnuarm的編譯器好像不行,用華恒光盤(pán)中的armv4l-unkown-linux-gcc的可以編譯通過(guò))

@ 編譯過(guò)程中會(huì)提示缺少u(mài)uid的頭文件和庫(kù),下載e2fsprogs-libs-1.38.tar.gz,里面有uuid的相關(guān)代碼.

@ 編譯的時(shí)候需要指定編譯器,在qt的configs目錄下有許多文件,修改linux-arm-g++-*這些文件中的相關(guān)定義.例如:默認(rèn)使用arm-linux-gcc編譯器,而我使用的是GNUARM的arm-elf-gcc編譯器,替換文件中所有arm-linux-前綴為arm-elf-即可.

坦白說(shuō),安裝過(guò)程很煩瑣,我買(mǎi)開(kāi)發(fā)板的時(shí)候,光盤(pán)送了一些工具,還有把QT/E 的安裝過(guò)程做成了一個(gè)腳本,類(lèi)似于windows 上的批處理,很方便,呵呵

做完上面那些,基本上開(kāi)發(fā)平臺(tái)就建好了,下面實(shí)踐一下一些簡(jiǎn)單的工具使用:

(以下資料來(lái)自QQ2440 Linux 開(kāi)發(fā)指南華南木棉嵌入式工作室

http://www.arm123.net

)

1.2.1.2.1

Jflash

jflash2440 是Linux 下通過(guò)JTAG 接口燒寫(xiě)B(tài)IOS 到Nand Flash 的工具。

使用JTAG 接口下載程序需要一條JTAG 電纜(已經(jīng)隨開(kāi)發(fā)套件附送),把JTAG 電纜連接板

子和主機(jī)的并口,然后打開(kāi)目標(biāo)板電源開(kāi)關(guān)

#cd /opt/FriendlyARM/QQ2440/Jflash

注意:該目錄下包含了Jflash 的源代碼,你可以運(yùn)行“make clean”刪除已經(jīng)編譯好的的程序,運(yùn)行“make”重新編譯。

執(zhí)行以下命令可以查看Jflash 的使用方法:

#./Jflash-s3c2440 --help

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} onclick=if(!this.resized) {return true;} else {window.open(this.src);} alt= src=http://blogimg.chinaunix.net/blog/upfile2/080412130758.jpg onload=if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} border=0>



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉