嵌入式Linux軟件設(shè)計(jì)課程報(bào)告mp3播放器madplay在ARM上的移植 -_第1頁
嵌入式Linux軟件設(shè)計(jì)課程報(bào)告mp3播放器madplay在ARM上的移植 -_第2頁
嵌入式Linux軟件設(shè)計(jì)課程報(bào)告mp3播放器madplay在ARM上的移植 -_第3頁
嵌入式Linux軟件設(shè)計(jì)課程報(bào)告mp3播放器madplay在ARM上的移植 -_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式Linux軟件設(shè)計(jì)課程設(shè)計(jì)報(bào)告姓名 學(xué)號 班級 題目 mp3播放器madplay在ARM上的移植成績 評語 日期 項(xiàng)目名稱:mp3播放器madplay在ARM實(shí)驗(yàn)箱上的移植項(xiàng)目需求分析: 基本功能:在實(shí)驗(yàn)箱上實(shí)現(xiàn)MP3文件的播放。 實(shí)現(xiàn)方法:硬件:PC機(jī)1臺    軟件:Linux操作系統(tǒng)、嵌入式Linux開發(fā)環(huán)境、madplay-0.15.2b.tar.gz 、libid3tag-0.15.1b.tar.gz 、libmad-0.15.1b.tar.gz 、zlib-1.2.3.tar.gz在PC機(jī)上交叉編譯生成靜態(tài)

2、鏈接的可執(zhí)行文件madplay,通過nfs方式將madplay和mp3文件放在實(shí)驗(yàn)箱上并運(yùn)行,實(shí)現(xiàn)mp3文件的播放。項(xiàng)目分工: 單人完成概要設(shè)計(jì): 軟硬件流程圖如圖所示:Ubuntu虛擬機(jī)ARM9超級終端GNU交叉編譯ARM實(shí)驗(yàn)板預(yù)處理匯編編譯鏈接.C源程序NFS 預(yù)處理器 交叉編譯器 匯編器 連接器 先編譯madplay所依賴的庫,再編譯生成可執(zhí)行文件madplay。首先編譯zlib-1.2.3因?yàn)閘ibid3tag-0.15.1b的安裝依賴這個庫文件。然后libid3tag-0.15.1b.tar.gz 、libmad-0.15.1b.tar.gz 、 madplay-

3、0.15.2b.tar.gz 均采用靜態(tài)編譯。詳細(xì)設(shè)計(jì): 1解壓源代碼包到/madplay# tar -zxvf zlib-1.2.3.tar.gz # tar -zxvf libid3tag-0.15.1b.tar.gz # tar -zxvf libmad-0.15.1b.tar.gz # tar -zxvf madplay-0.15.2b.tar.gz 2編譯madplay及其所依賴的庫文件(1)新建目錄/madplay/libz(2)編譯zlib,因?yàn)閘ibid3tag依賴于這個庫文件打開/madplay/zlib-1.2.3目錄下的Makefile文件,按以下內(nèi)容修改并保存

4、:CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gccAR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar rcsRANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib# ./configure -prefix=madplay/libz# make# make install(3)編譯libid3tag# cd ./libid3tag-0.15.1b# ./configure CC=/opt/host/armv4l/bin/armv4l-unknown-

5、linux-gcc -host=arm-linux -prefix=madplay/libz -disable-debugging -disable-shared -enable-static CPPFLAGS=-I/madplay/libz/include LDFLAGS=-L/madplay/libz/lib# make# make install(4)編譯libmad# cd ./libmad-0.15.1b# ./configure CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -host=arm-linux -prefix=madp

6、lay/libz -disable-debugging -disable-shared -enable-static CPPFLAGS=-I/madplay/libz/include LDFLAGS=-L/madplay/libz/lib# make# make install(5)編譯madplay# cd ./madplay-0.15.2b# ./configure CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -host=arm-linux -prefix=madplay/libz -disable-debugging -disable

7、-shared -enable-static CPPFLAGS=-I/madplay/libz/include LDFLAGS=-L/madplay/libz/lib# make但是,這樣得到的是動態(tài)鏈接。如果在madplay-0.15.2b目錄中執(zhí)行arm-inux-gcc命令,并且在最后加上-static,運(yùn)行以后就可以得到靜態(tài)鏈接的程序,如(6)所示。(6)靜態(tài)鏈接# /opt/host/armv4l/bin/armv4l-unknown-linux-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o geto

8、pt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_oss.o -L/home/madplay/lib /home/madplay/lib/libmad.a /home/madplay/lib/libid3tag.a -lz -lm -static執(zhí)行完畢后,生成靜態(tài)鏈接的可執(zhí)行文件madplay3下載madplay

9、和1.mp3到開發(fā)板運(yùn)行測試(1)將madplay和1.mp3拷貝到nfs共享目錄/home/arm/nfs(2)在虛擬機(jī)終端運(yùn)行telnet 192.168.0.11。將PC機(jī)的/home/arm/nfs 掛載到實(shí)驗(yàn)箱的/tmp目錄,在實(shí)驗(yàn)箱上執(zhí)行:#mount -t nfs 192.168.0.10:/home/arm/nfs /tmp(3)運(yùn)行程序./madplay 1.mp3即可聽到歌曲。調(diào)試結(jié)果與改進(jìn)方案: 1 通過-disable-shared和-enable-static方式編譯產(chǎn)生madplay,通過file madplay或arm-linux-readelf d madpla

10、y命令均可得出生成的madplay是動態(tài)鏈接的。在實(shí)驗(yàn)板上運(yùn)行也提示加載共享庫失敗。這說明-disable-shared和-enable-static并不能進(jìn)行靜態(tài)編譯。復(fù)制在編譯madplay時的最后一條gcc命令,并在末尾加上-static并運(yùn)行,所需的動態(tài)鏈接庫就添加到了可執(zhí)行文件中。再執(zhí)行file madplay顯示可執(zhí)行文件是statically linked。2 第一次進(jìn)行最后的靜態(tài)編譯時不能通過,經(jīng)檢查發(fā)現(xiàn)編譯zlib-1.2.3時只修改了Makefile.in文件而未修改Makefile,所以進(jìn)行的不是交叉編譯。修改Makefile的響應(yīng)指令即解決。3 如果將源碼包文件夾和存放生成庫文件的文件夾放在一個目錄下,即使修改CPPFLAGS和LDFLAGS也無法找到安裝zlib時生成的libz.a。解決方法是將存放生成的庫文件的文件夾libz放在源碼包文件夾madplay中。4 第一次下載的libmad-0.15.1b.ta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論