



下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖合同范例雞
- 2025重慶市安全員《C證》考試題庫及答案
- 交評合同范本
- 廠房設(shè)備合同范本
- 沖擊鉆轉(zhuǎn)讓合同范本
- 農(nóng)村套房買賣范本合同范本
- 醫(yī)院采購議價合同范本
- 賣好車合同范本
- 出租園林單間合同范本
- 盧灣區(qū)食品運(yùn)輸合同范本
- 2025年公務(wù)員考試《行測》模擬題及答案(詳細(xì)解析)
- 2024年黑龍江省牡丹江市中考?xì)v史試卷
- 滬科版八年級物理知識點(diǎn)總結(jié)
- 孫權(quán)勸學(xué)(原卷版)-2024年中考語文之文言文對比閱讀
- 高速公路日常清掃與養(yǎng)護(hù)方案
- 風(fēng)電epc合同模板
- 2024年新人教版一年級數(shù)學(xué)下冊《第2單元第5課時 20以內(nèi)的退位減法解決問題(1)》教學(xué)課件
- 2022年陜西省普通高校職業(yè)教育單獨(dú)招生統(tǒng)一考試語文甲(A)試題
- 失業(yè)保險待遇申領(lǐng)表
- 2024-2025學(xué)年初中信息技術(shù)(信息科技)第二冊河北大學(xué)版(第3版)教學(xué)設(shè)計(jì)合集
- 期末測試卷(一)(試題)2023-2024學(xué)年二年級上冊數(shù)學(xué)蘇教版
評論
0/150
提交評論