一、前言
    
    很多人看到這個(gè)剖析系列,覺(jué)得難了,其中不乏熱衷于刷機(jī)的人。剛剛接觸
E680g的普通人理解起來(lái)固然有些困難,然對(duì)于一個(gè)經(jīng)常刷來(lái)刷去的”高手“,就
說(shuō)不過(guò)去了。是人就知道,“世上無(wú)難事,只怕有心人”,這句講爛了的千古真理!
    現(xiàn)成的東西學(xué)起來(lái)有什么難的,學(xué)不會(huì)那是沒(méi)耐心或者不想學(xué),至于說(shuō)真正
難得東西,那是在你以后的變通和創(chuàng)新。
    應(yīng)用系列的文章一般人都可以做得到,開(kāi)發(fā)方面的知識(shí)深度就遠(yuǎn)遠(yuǎn)超出普通
人能接受的范圍,這里面講得內(nèi)容并不難,只是想要靈活得擴(kuò)展起來(lái),沒(méi)有編程
設(shè)計(jì)經(jīng)驗(yàn)是不可能的。
    我們?cè)谇懊媸褂昧撕芎?jiǎn)單的方法構(gòu)造了一個(gè)交叉編譯環(huán)境,上手比較容易。
在些基礎(chǔ)上,我們來(lái)實(shí)際編譯一些實(shí)實(shí)在在的東西。
二、重要提示
    文章難免有疏漏,有問(wèn)題可查看:
    全系列文章地址:http://blog.csdn.net/liwei_cmg
    文章相關(guān)的重要資源的下載地址:http://play.younet.com/view.php?tid=18578
三、BusyBox的編譯
    Busybox是一個(gè)集成了多個(gè)最常用linux命令和工具的軟件。首先下載Busybox
源代碼,這里使用的是busybox-0.60.5.tar.gz版本。
    1.在Linux解壓縮,或者在Windows下解壓縮復(fù)制到Linux里面
    tar xcvf busybox-0.60.5.tar.gz
    
    2.cd busybox 進(jìn)入目錄,查看Makefile文件,實(shí)在比較復(fù)雜,不過(guò)確是了解源代碼
結(jié)構(gòu)的最好方法!對(duì)這個(gè)文件作如下兩處修改。
    
    a.將84行下面這6行內(nèi)容
    
    # If you are running a cross compiler, you may want to set this
    # to something more interesting, like "powerpc-linux-".
    CROSS =
    CC = $(CROSS)gcc
    AR = $(CROSS)ar
    STRip = $(CROSS)strip
    
    修改為
    
    # If you are running a cross compiler, you may want to set this
    # to something more interesting, like "powerpc-linux-".
    CROSS = /home/gcc/arm/gcc-3.3.6-glibc-2.3.2/arm-linux
    CC = $(CROSS)/bin/arm-linux-gcc
    AR = $(CROSS)/bin/arm-linux-ar
    STRIP = $(CROSS)/bin/arm-linux-strip
    
    注意:CROSS內(nèi)容后面不可有空格,結(jié)合CC,AR,STRIP的內(nèi)容,一定要保證是你
自己機(jī)器上arm-linux-gcc,arm-linux-ar,arm-linux-strip的位置,這里使用的是上
篇文章里編譯的路徑。
    可以看出這里是為了指定使用的編譯器。
    b.將108行如下內(nèi)容
    
    #LDFLAGS+=-nostdlib
    #LIBRARIES = $(LIBCDIR)/lib/libc.a -lgcc
    #CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR)
    #GCCINCDIR = $(shell gcc -PRint-search-dirs | sed -ne "s/install: /(.*/)//1include/gp")
    修改為
    
    #LDFLAGS+=-nostdlib
    #LIBRARIES = $(LIBCDIR)/lib/libc.a -lgcc
    CROSS_CFLAGS+= -I$(CROSS)/arm-linux/include -I$(CROSS)/arm-linux/sys-include#-I$(GCCINCDIR)
    #GCCINCDIR = $(shell gcc -print-search-dirs | sed -ne "s/install: /(.*/)//1include/gp")
    這里指定的是使用頭文件。
    
    3.修改后保存,編譯
    
    在busybox路徑下,執(zhí)行命令make all,如有錯(cuò)誤,多半是上面所述Makefile文件的問(wèn)題,
修改后先執(zhí)行make clean再執(zhí)行make all。
    成功之后,最后會(huì)顯示:
    
    BusyBox Documentation
 
    mkdir -p docs
    pod2text docs/busybox.pod > docs/BusyBox.txt
    mkdir -p docs
    pod2man --center=BusyBox --release="version 0.60.5" /
        docs/busybox.pod > docs/BusyBox.1
    pod2html --noindex docs/busybox.pod > docs/BusyBox.html
    4.將busybox路徑下編譯成功的busybox文件,復(fù)制到手機(jī),telnet,并進(jìn)入
busybox所在目錄,輸入類似以下命令:
    ./busybox --help
    ./busybox lsmod
    ./busybox date
    ...
    
    沒(méi)有任何問(wèn)題。    
    
    我們telnet下輸入這個(gè)命令,在Busybox所在目錄建立testbox.lin文件
    ./busybox echo `pwd`/busybox date /> `pwd`/date.txt > testbox.lin
    在E680g上用Loader關(guān)聯(lián)打開(kāi)后,Busybox所在目錄下會(huì)生成包含當(dāng)前日期的
date.txt文件。
四、利用dev-ezx工具開(kāi)發(fā)圖形化程序
    1.下載dev-ezx-0.2.0工具,解壓縮復(fù)制到Linux下。可以看到一個(gè)英文說(shuō)明
文件BUILD-INSTRUCTIONS,其實(shí)里面講得很清楚,這里用中文重復(fù)一下。
    2.telnet進(jìn)入e680g,將/usr/lib打包,復(fù)制到Linux解開(kāi),把解開(kāi)的文件復(fù)制
dev-ezx-0.2.0的lib目錄下。
    tar cvf lib.tar /usr/lib
    
    3.進(jìn)入dev-ezx-0.2.0/moc目錄上,執(zhí)行命令make all編譯moc。
    
    4.進(jìn)入dev-ezx-0.2.0/helloworld下,執(zhí)行命令make,此時(shí)需要設(shè)置好PATH環(huán)境
變量,否則會(huì)系統(tǒng)會(huì)找不著arm-linux-g++。
    5.編譯成功后,將helloworld復(fù)制到手機(jī)上。圖形化的程序需要設(shè)置QT等環(huán)境
變量,如下:
    export QTDIR=/usr/lib/ezx
    export LD_LIBRARY_PATH=$QTDIR/lib
    export EZX_RES_F cd /mmc/mmca1
    ./helloworld
    
    即可看到運(yùn)行效果,關(guān)于QT圖形化編程方面,就需要查閱相當(dāng)多的資料了。
    
五、最后
    
    通過(guò)這兩個(gè)例子,我們清楚有了交叉編譯環(huán)境,才能談得上擴(kuò)展E680的功能。
    
新聞熱點(diǎn)
疑難解答
圖片精選