madplay是一款開源的mp3播放器。php
http://madplay.sourcearchive.com/html
編譯madplay須要用到三個庫 zlib-1.2.8 libid3tag-0.15.1b libmad-0.15.1b (最後面有文件下載地址)linux
首先建立一個公共庫文件目錄測試
#mkdir /_install (目錄地址隨意,只要和下面可以都對應起來就行)字體
zlib http://www.zlib.net/spa
解壓源碼,進入目錄.net
#cd zlib-1.2.8代理
#./configure --prefix=/_install (公共庫文件目錄)htm
#make && make installip
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編譯
解壓源碼,進入目錄
#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播放)
先將公共庫文件目錄裏面的東西全刪除
#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