1、环境
linux操作系统:fedora 10;
交叉编译器: arm-linux-gcc-4.3.3
目前madplay的官方网站是http://www./products/mad/,透过该网
站的介绍可以得知, 它还需要libmad 和libid3tag 两个库, 从该网站找到下载
连接http:///project/showfiles.php?group_id=12349
这样我们就得到了移植 madplay 所需要的关键的三个文件:
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 版本的安装目录
接下来把从网上下载到的源代码包放入 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 目录出现编译madplay
所依赖的库文件和头
文件。
编译安装madplay
如果我们还是像刚才那样配置编译选项:
#cd madplay-0.15.2b
#./configure --prefix=
/opt/GTStudio/GT2440/madplay/target-x86
提示我们在配置 madplay
之前要先安装libmad,因为我们之前已经编译并安
装了依赖库,根据提示我们要设置CPPFLAGS 环境变量,采用如下参数重新配
置:
#./configure
--prefix=/opt/GTStudio/GT2440/madplay/target-x86
CPPFLAGS=-I//opt/GTStudio/GT2440/madplay/target-x86/include
提示告诉我们还要设置 LDFLAGS 环境变量,因此再次修改配置参数如下:
#./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
这说明配置已经成功,生成了编译所需要的 Makefile 文件,输入一下命令
开始编译安装:
#make
#make install
执行完毕, 可执行文件将被安装在我们指定的目录
/opt/GTStudio/GT2440/madplay/target-x86 目录中:
#ls target-x86/bin
abxtest madplay
其中abxtest 是附加生成的测试程序,不必理会。
测试PC 版的madplay
拷贝一首mp3 文件到madplay
所在的目录,执行:
#./madplay test.mp3
如果你的声卡已经正确安装,就可以听到mp3 的声音了。
3、构建编译脚本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]#
在安装过程中会出现错误:
cc1: error: unrecognized command line option "-fforce-mem"
make[2]: *** [version.lo] 错误 1
make[2]: Leaving directory
`/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory
`/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make: *** [all] 错误 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: *** 没有指明目标并且找不到 makefile。 停止。
make: *** 没有规则可以创建目标“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 |