根文件系统的库如果是静态库,madplay也必须选择静态库。
否则 madplay xxx.mp3 会出现 "Illegal instruction"错误
一.准备
移植Madplay所需四个软件包分别为: zlib-1.2.3.tar.gz
libid3tag-0.15.1b.tar.gz
libmad-0.15.1b.tar.gz
madplay-0.15.2b.tar.gz
二.解压
1、在/MyArmDevice目录下建立工作目录madplay,在该目录下创建2个子目录,tarball用于存放源码包,src-arm用于存放解包后的源代码。
2、将上述3个源码包复制到 /MyArmDevice/madplay/tarball目录
3、将3个源码包解包到 /MyArmDevice/madplay/src-arm目录
tar -zxvf zlib-1.2.3.tar.gz -C ../src-arm
tar -zxvf libid3tag-0.15.1b.tar.gz -C ../src-arm
tar -zxvf libmad-0.15.1b.tar.gz -C ../src-arm
tar -zxvf madplay-0.15.2b.tar.gz -C ../src-arm
三.编译zlib
#cd zlib-1.2.3/
#./configure --prefix=/usr/local/crosstool/arm-linux/lib
修改Makefile
CC=/usr/local/crosstool/bin/arm-linux-gcc
AR=/usr/local/crosstool/bin/arm-linux-ar rcs
RANLIB=/usr/local/crosstool/bin/arm-linux-ranlib
执行 #make
#make install
四.编译libid3tag
#cd libid3tag-0.15.1b/
#./configure --host=arm-linux CC=arm-linux-gcc --disable-debugging --disable-shared --prefix=/usr/local/crosstool/arm-linux/lib/ CPPFLAGS=-I/usr/local/crosstool/arm-linux/lib/include/ LDFLAGS=-L/usr/local/crosstool/arm-linux/lib/lib
#make
#make install
五.编译libmad
#cd libmad-0.15.1b/
#./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/crosstool/arm-linux/lib CPPFLAGS=-I/usr/local/crosstool/arm-linux/lib/include/ LDFLAGS=-L/usr/local/crosstool/arm-linux/lib/lib
修改 Makefile 129行 去掉 –fforce-mem
#make
#make install
六.编译madplay
#cd madplay-0.15.2b/
#./configure --host=arm-linux CC=arm-linux-gcc --disable-debugging --disable-shared CPPFLAGS=-I/usr/local/crosstool/arm-linux/lib/include/ LDFLAGS=-L/usr/local/crosstool/arm-linux/lib/lib
#make
但是,这样得到的是动态连接的。
#rm madplay
拷贝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
最后把madplay下到板子就可以了.