移植madplay

2930阅读 0评论2013-04-03 星闪夜空
分类:LINUX

移植前的说明:内核的编译工具、根文件系统的编译工具、madplay的编译工具一定要是相同的。(我的编译器的版本是3.4.5);
              根文件系统的库如果是静态库,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下到板子就可以了.


上一篇:Linux进程管理
下一篇:Linux内核启动代码之__create_page_tables函数分析