1、環(huán)境
linux操作系統(tǒng):fedora 10;
交叉編譯器: arm-linux-gcc-4.3.3
目前madplay的官方網(wǎng)站是http://www./products/mad/,透過該網(wǎng)
站的介紹可以得知, 它還需要libmad 和libid3tag 兩個(gè)庫, 從該網(wǎng)站找到下載
連接http:///project/showfiles.php?group_id=12349
這樣我們就得到了移植 madplay 所需要的關(guān)鍵的三個(gè)文件:
madplay-0.15.2b.tar.gz
libmad-0.15.1b.tar.gz
libid3tag-0.15.1b.tar.gz
2、手動編譯
#mkdir madplay
#cd madplay
#mkdir tarball src-x86 src-arm target-x86 target-arm
目錄說明:
tarball 目錄用來存放所有的源代碼包
src-x86 目錄用來存放X86 版本的所有源代碼文件
src-arm 目錄用來存放ARM 版本的所有源代碼文件
target-x86 目錄是X86 版本的安裝目錄
target-arm 目錄是ARM 版本的安裝目錄
接下來把從網(wǎng)上下載到的源代碼包放入 tarball 目錄:
解壓源代碼包
#cd tarball
#for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86; done
編譯madplay 所依賴的庫文件
a) libid3tag
#cd ../src-x86/libid3tag-0.15.1b
#./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
#make
#make install
b) libmad
#cd ../libmad-0.15.1b
#./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
#make
#make install
以上過程完畢,將在 target-x86 目錄出現(xiàn)編譯madplay
所依賴的庫文件和頭
文件。
編譯安裝madplay
如果我們還是像剛才那樣配置編譯選項(xiàng):
#cd madplay-0.15.2b
#./configure --prefix=
/opt/GTStudio/GT2440/madplay/target-x86
提示我們在配置 madplay
之前要先安裝libmad,因?yàn)槲覀冎耙呀?jīng)編譯并安
裝了依賴庫,根據(jù)提示我們要設(shè)置CPPFLAGS 環(huán)境變量,采用如下參數(shù)重新配
置:
#./configure
--prefix=/opt/GTStudio/GT2440/madplay/target-x86
CPPFLAGS=-I//opt/GTStudio/GT2440/madplay/target-x86/include
提示告訴我們還要設(shè)置 LDFLAGS 環(huán)境變量,因此再次修改配置參數(shù)如下:
#./configure
--prefix=/opt/GTStudio/GT2440/madplay/target-x86
CPPFLAGS=-I/opt/GTStudio/GT2440/madplay/target-x86/include
LDFLAGS=-L/opt/GTStudio/GT2440/madplay/target-x86/lib
這說明配置已經(jīng)成功,生成了編譯所需要的 Makefile 文件,輸入一下命令
開始編譯安裝:
#make
#make install
執(zhí)行完畢, 可執(zhí)行文件將被安裝在我們指定的目錄
/opt/GTStudio/GT2440/madplay/target-x86 目錄中:
#ls target-x86/bin
abxtest madplay
其中abxtest 是附加生成的測試程序,不必理會。
測試PC 版的madplay
拷貝一首mp3 文件到madplay
所在的目錄,執(zhí)行:
#./madplay test.mp3
如果你的聲卡已經(jīng)正確安裝,就可以聽到mp3 的聲音了。
3、構(gòu)建編譯腳本build-x86
[root@HeBi madplay]# cat build-x86
#!/bin/sh
MADPLAY_DIR=$PWD
SRC_DIR=src-x86
TARGET_DIR=$MADPLAY_DIR/target-x86
#tar xvzf ./tarball/libid3tag-0.15.1b.tar.gz -C
$SRC_DIR
#tar xvzf ./tarball/libmad-0.15.1b.tar.gz -C $SRC_DIR
#tar xvzf ./tarball/madplay-0.15.2b.tar.gz -C $SRC_DIR
cd $SRC_DIR/libid3tag-0.15.1b
./configure --prefix=$TARGET_DIR
make;make install
cd ../../
cd $SRC_DIR/libmad-0.15.1b
./configure --prefix=$TARGET_DIR
make;make install
cd ../..
cd $SRC_DIR/madplay-0.15.2b
./configure --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include
LDFLAGS=-L$TARGET_DIR/lib
make;make install
cd ../../
[root@HeBi madplay]#
在安裝過程中會出現(xiàn)錯(cuò)誤:
cc1: error: unrecognized command line option "-fforce-mem"
make[2]: *** [version.lo] 錯(cuò)誤 1
make[2]: Leaving directory
`/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make[1]: *** [all-recursive] 錯(cuò)誤 1
make[1]: Leaving directory
`/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make: *** [all] 錯(cuò)誤 2
make install-recursive
configure: error: mad.h was not found
*** You must first install libmad before you can build this
package.
*** If libmad is already installed, you may need to use the
CPPFLAGS
*** environment variable to specify its installed location, e.g.
-I
.
make: *** 沒有指明目標(biāo)并且找不到 makefile。 停止。
make: *** 沒有規(guī)則可以創(chuàng)建目標(biāo)“install”。 停止。
[root@HeBi madplay]#
解決辦法:
[root@HeBi madplay]# ls
build-arm build-x86
src-arm src-x86
tarball target-arm
target-x86
[root@HeBi madplay]# cd src-x86/
[root@HeBi src-x86]# ls
libid3tag-0.15.1b
libmad-0.15.1b madplay-0.15.2b
[root@HeBi src-x86]# cd libmad-0.15.1b/
[root@HeBi libmad-0.15.1b]# ls
aclocal.m4
config.sub
depcomp
imdct_s.dat
libtool
mkinstalldirs synth.c
bit.c
configure
fixed.c
INSTALL
ltmain.sh
msvc++
synth.h
bit.h
configure.ac
fixed.h
install-sh
mad.h
qc_table.dat timer.c
CHANGES
COPYING
frame.c
layer12.c
mad.h.sed
README
timer.h
config.guess
COPYRIGHT
frame.h
layer12.h
Makefile
rq_table.dat TODO
config.h
CREDITS
global.h
layer3.c
Makefile.am
sf_table.dat VERSION
config.h.in
D.dat
huffman.c
layer3.h
Makefile.in
stamp-h1
version.c
config.log
decoder.c
huffman.h
libmad.list
minimad.c
stream.c |