移植环境:
主 机:VMWare--Fedora 9
开发板:Mini2440--256MB Nand,Kernel:2.6.32.2
编译器:arm-linux-gcc-4.3.2.tgz
madplay的移植需要以下的几个包:madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz 和 zlib-1.1.4.tar.gz。
http://sourceforge.net/project/showfiles.php?group_id=12349
http://cdnetworks-kr-1.dl.sourceforge.net/project/mad/libid3tag/0.15.1b/libid3tag-0.15.1b.tar.gz
http://cdnetworks-kr-2.dl.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz
http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
下载完成后,将这四个文件传送到Fedora系统中的madplay目录下
在madplay目录下建立一个build文件夹用来存放编译生成的文件
[root@localhost madplay]# mkdir build
编译zlib-1.1.4
[root@localhost madplay]# tar xvzf zlib-1.1.4.tar.gz
[root@localhost madplay]# cd zlib-1.1.4
[root@localhost zlib-1.1.4]# vi configure
将
24 AR=${AR-"ar rc"}
25 RANLIB=${RANLIB-"ranlib"}
63 cc=${CC-gcc}
修改为:
AR=${AR-"arm-linux-ar rc"}
RANLIB=${RANLIB-"arm-linux-ranlib"}
cc=${CC-arm-linux-gcc}
[root@localhost zlib-1.1.4]# ./configure --prefix=/opt/software/madplay/build
[root@localhost zlib-1.1.4]# make
[root@localhost zlib-1.1.4]# make install
[root@localhost zlib-1.1.4]# cd ..
[root@localhost madplay]# cd build/
[root@localhost build]# ls
include lib
生成了include lib连个目录,及相应的文件。
编译libid3tag-0.15.1b
[root@localhost madplay]# tar xvzf libid3tag-0.15.1b.tar.gz
[root@localhost madplay]# cd libid3tag-0.15.1b
[root@localhost libid3tag-0.15.1b]# ./configure CC=arm-linux-gcc --prefix=/opt/software/madplay/build --host=arm-linux --disable-debugging --enable-static CPPFLAGS=-I/opt/software/madplay/build/include LDFLAGS=-L/opt/software/madplay/build/lib
[root@localhost libid3tag-0.15.1b]# make
[root@localhost libid3tag-0.15.1b]# make install
编译libmad-0.15.1b
[root@localhost madplay]# tar -xvzf libmad-0.15.1b.tar.gz
[root@localhost madplay]# cd libmad-0.15.1b
[root@localhost libid3tag-0.15.1b]# ./configure CC=arm-linux-gcc --prefix=/opt/software/madplay/build --host=arm-linux --disable-debugging --enable-static CPPFLAGS=-I/opt/software/madplay/build/include LDFLAGS=-L/opt/software/madplay/build/lib
[root@localhost libid3tag-0.15.1b]# make
[root@localhost libid3tag-0.15.1b]# make install
编译libmad-0.15.1b
[root@localhost madplay]# tar -xvzf libmad-0.15.1b.tar.gz
[root@localhost madplay]# cd libmad-0.15.1b
[root@localhost libmad-0.15.1b]# ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/opt/software/madplay/build --disable-shared
[root@localhost libmad-0.15.1b]# make
[root@localhost libmad-0.15.1b]# make install
编译madplay-0.15.2b
[root@localhost madplay]# tar xvzf madplay-0.15.2b.tar.gz
[root@localhost madplay]# cd madplay-0.15.2b
[root@localhost madplay-0.15.2b]# ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/opt/software/madplay/build --enable-static --disable-shared CPPFLAGS=-I/opt/software/madplay/build/include LDFLAGS=-L/opt/software/madplay/build/lib
[root@localhost madplay-0.15.2b]# make
[root@localhost madplay-0.15.2b]# make install
编译成功后生成的可执行文件madplay在madplay/build/bin目录下,为了和开发板上自带的madplay区别,将madplay重命名为mymadplay,
[root@localhost bin]# mv madplay mymadplay
优化:
[root@localhost bin]# arm-linux-strip mymadplay
查看所需的库文件。
[root@localhost bin]# arm-linux-readelf -d mymadplay
Dynamic section at offset 0x25ef0 contains 29 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libid3tag.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000f (RPATH) Library rpath: [/opt/software/madplay/build/lib]
0x0000001d (RUNPATH) Library runpath:
libm.so.6,libc.so.6在busybox制作根文件系统是已经生成在/lib目录下了,所以只要将/opt/software/madplay/build/lib目录下的libid3tag.so.0文件拷到/lib目录下即可,但是libid3tag.so.0仅仅是一个链接文件,所以,删除libid3tag.a libid3tag.la libmad.a libmad.la libz.a文件,然后将lib文件打包,拷贝到开发板然后解压即可。
[root@localhost build]# tar cvzf lib.tar.gz lib
将可执行文件拷到开发板的/usr/bin目录下将madplay的库文件放到开发板的/lib目录下
测试: