開源mp3播放器--madplay 編譯和移植 簡記


madplay是一款開源的mp3播放器。

http://madplay.sourcearchive.com/

下面簡單記錄一下madplay的編譯與移植到ARM開發板上的過程

一、編譯x86版本的madplay

編譯madplay需要用到三個庫  zlib-1.2.8  libid3tag-0.15.1b  libmad-0.15.1b (最后面有文件下載地址)

 

首先創建一個公共庫文件目錄

#mkdir /_install (目錄地址隨意,只要和下面能夠都對應起來就行)

zlib       http://www.zlib.net/

解壓源碼,進入目錄

#cd zlib-1.2.8

#./configure --prefix=/_install  (公共庫文件目錄)

#make && make install

Libid3tag  http://cblfs.cross-lfs.org/index.php/Libid3tag(要代理才能上,如果不會代理可以用下面提供的地址下載)

解壓源碼,進入目錄

#cd libid3tag-0.15.1b

#./configure --prefix=/_install  (公共庫文件目錄)

#make && make install

libmad  http://www.linuxfromscratch.org/blfs/view/6.3/multimedia/libmad.html

解壓源碼,進入目錄

#cd libmad-0.15.1b

#./configure --prefix=/_install  (公共庫文件目錄)

#make

出現錯誤提示:cc1: error: unrecognized command line option "-fforce-mem"

解決辦法是修改Makefile文件

#vi Makefile 

將第129行中的  -fforce-mem  刪除,重新make && make install 即可

上面的工作主要是得到編譯madplay所需要的庫文件和頭文件,編譯結束后會在/_install目錄下產生include lib 等目錄,下面的工作要用到這兩個目錄

madplay編譯

解壓源碼,進入目錄

#cd madplay-0.15.2b

#mkdir _install

#./configure --prefix=/${PWD}/_install CPPFLAGS=-I/_install/include LDFLAGS=-L/_install/lib  

(指定編譯需要的頭文件目錄和連接需要的庫文件目錄,品紅色字體目錄即為前面提到的公共庫文件目錄)

配置成功后

#make && make install 

編譯安裝成功后進入_install 目錄,

#ls (內容如下)

#bin man share

進入bin目錄即可看見madplay可執行文件

#./madplay test.mp3 (即可測試mp3播放)

 

二、將madplay播放器移植到arm開發板中

先將公共庫文件目錄里面的東西全刪除

#cd /_install 

#rm * -rf

然后進入目錄 zlib-1.2.8

#cd zlib-1.2.8

#make distclean 

#./configure --prefix=/_install

#vi Makefile

將19行改為如下 CC=arm-linux-gcc   (原來是 CC=gcc)

將30行給位如下 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map  (原來是 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map)

保存退出,然后編譯安裝

#make && make install

 

進入 目錄 libid3tag-0.15.1b

#cd libid3tag-0.15.1b

#make distclean

#./configure --prefix=/_install --host=arm-linux (指定目標板)

#make && make install

 

進入目錄 libmad-0.15.1b

#cd libmad-0.15.1b

#make distclean

#./configure --prefix=_install/ --host=arm-linux

#vi Makefile

將第129行中的  -fforce-mem  刪除,重新make && make install 即可

#make && make install

 

進入目錄 madplay-0.15.2b

#cd madplay-0.15.2b

#make distclean

#./configure --prefix=/${PWD}/_install --host=arm-linux  CPPFLAGS=-I/_install/include LDFLAGS=-L/_install/lib  

#make && make install

make 成功后會在當前目錄下的_install目錄下產生安裝結果

#cd _install

#ls 

bin man share

#cd bin 

#ls

abxtest madplay

可以使用file命令查看madplay文件的屬性

#file madplay 

madplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped

這樣編譯出來的二進制文件是動態連接而成的,如果下載到開發板運行,會提示很多庫文件找不到。。。

當然可以把所有的需要用到的庫文件下載到開發板,但是這樣可能比較麻煩,比較簡單的方法是使用靜態連接的方法。

#rm madplay -f

拷貝make的最后一個連接的命令,在最后加上-static 和 -lz,然后運行,得到靜態連接的程序,如下:
#arm-linux-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.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  -lmad -lid3tag -lm -lz -static

連接得到的二進制文件在當前目錄下

#file madplay

madplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

可以看到madplay播放器是使用靜態連接而成的。

拷貝到開發板就不會有庫文件找不到的問題了!

 

所用到的文件下載傳送門

madplay_0.15.2b.orig.tar.gz  http://download.csdn.net/detail/qin1174586290/6364773

libmad-0.15.1b.tar.gz  http://download.csdn.net/detail/qin1174586290/6364767

libid3tag-0.15.1b.tar.gz  http://download.csdn.net/detail/qin1174586290/6364763

zlib-1.2.8.tar.gz  http://download.csdn.net/detail/qin1174586290/6364757

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM