s3c2440音乐播放器madpaly移植

来源:互联网 发布:c高级编程第9版 中文 编辑:程序博客网 时间:2024/06/07 07:13

本文转载自http://blog.sina.com.cn/s/blog_8f9cdbbd010178y7.html,并根据自己的理解进行了更改与补充。

madplay版本: 

    madplay-0.15.2 

交叉编译器版本: 

    arm-linux-gcc 4.3.3 

操作系统平台: 

    Linux -- Fedora10 

开发板平台: 

    Arm -- TQ2440

 

准备源码包: madplay播放器下载

madplay-0.15.2b.tar.gz   libmad-0.15.1b.tar.gzlibid3tag-0.15.1b.tar.gz    

zlib-1.1.4.tar.gz

 

建立两个文件夹,一个存放源码,一个存放安装文件

home下,mkdir两个文件夹:madplay-src madplay

依次解压四个源码包到madplay-src目录下: tar xzvf XXXXXXXXX

本文默认已在/etc/profile中指定了 arm-linux-gcc 4.3.3安装目录。

一.动态编译 

1. 编译 zlib-1.1.4

首先配置configure 文件(注:等号两边不能有空格)
 

#./configure --prefix=/home/madplay

命令解释:

把zlib-1.1.4编译安装到/home/madplay目录下,该目录可根据自己需要更改。会在/home/madplay目录下产生/include 和/lib目录

修改Makefile
 

CC=arm-linux-gcc

AR=arm-linux-ar rc

RANLIB=arm-linux-ranlib 

#make

#make install

 

2. 编译libid3tag

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplayCPPFLAGS=-I /home/madplay/include LDFLAGS=-L /home/madplay/lib

命令解释:

CC=arm-linux-gcc:指定C编译器为arm-linux-gcc

--host=arm-linux:指定运行平台

 --prefix=/home/madplay:指定编译安装到/home/madplay                

CPPFLAGS=-I /home/madplay/include:指定.h头文件目录

 LDFLAGS=-L /home/madplay/lib:指定编译所用到的库文件目录

#make

#make install

 

3. 编译libmad

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplayCPPFLAGS=-I /home/madplay/include LDFLAGS=-L /home/madplay/lib 


#make

这里会出现一个错误:cc1: error: unrecognized command line option "-fforce -mem"

我们修改Makefile文件,大约在129行将-fforce -mem删掉。

#make

#make install

 

4. 编译madplay

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplayCPPFLAGS=-I /home/madplay/include LDFLAGS=-L /home/madplay/lib 

#make

到这就结束了,可以不用make install

 

madplay-0.15.2b目录下生成madplay的可执行文件,查看一下需要的动态库

#arm-linux-readelf -d madplay

 

输出运行时所需的动态库:libmad.so.0, libid3tag.so.0, libm.so.6libc.so.6, libgcc_s.so.1(都是真实库文件,不是库的链接文件)

前两个文件是在/madplay/lib/下生成的,把这两个文件也拷贝到根文件系统的/lib目录下。

我把这些库都加到/lib中还是不能用,有错误--/bin/sh:madplay :not found.后来又加了一个ld-linux.so.3就好用了。这些库文件可以在这里下载:madplay_lib.tar.gz

madplay复制到根文件系统/usr/bin目录下,将一个MP3文件也放在某一目录下(如,/mp3/song 目录下的125.mp3文件),在开发板上执行madplay程序

#madplay /mp3/song/125.mp3 

就能听音乐了!

madplay还有一些快捷键,比如:增大/减小音量(+/-),暂停(b),停止(ESC),其

他的操作可以查看madplay的源码。

二.静态编译

在配置 libid3taglibmadmadplay 时,加上参数“--disable-shared --enable-static”即可静态编译madplay (配置zlib-1.1.4与上面相同)

  1. 编译 zlib-1.1.4

首先配置configure 文件 

#./configure --prefix=/home/madplay

修改Makefile
 

CC=arm-linux-gcc

AR=arm-linux-ar rc

RANLIB=arm-linux-ranlib 

#make

#make install

 

2. 编译libid3tag

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplay --disable-shared --enable-static CPPFLAGS=-I /home/madplay/include LDFLAGS=-L /home/madplay/lib

命令解释:

 --disable-shared:禁止库共享,可理解为禁止库动态链接

--enable-static:使能库静态链接


#make

#make install

 

3. 编译libmad

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplay --disable-shared --enable-staticCPPFLAGS=-I /home/madplay/include LDFLAGS=-L /home/madplay/lib 

#make

这里会出现一个错误:cc1: error: unrecognized command line option "-fforce -mem"

我们修改Makefile文件,大约在129行将-fforce -mem删掉。

#make

#make install

 

4. 编译madplay

 

#./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/madplay --disable-shared --enable-static CPPFLAGS=-I/home/madplay/include LDFLAGS=-L/home/madplay/lib

#make

到这就结束了,可以不用make install

 

madplay-0.15.2b目录下生成madplay的可执行文件,查看一下需要的动态库

#arm-linux-readelf -d madplay

发现还需要三个动态库libm.so.6libc.so.6, libgcc_s.so.1

我们用刚刚编译madplay时的最后一句命令

#arm-linux-gcc -Wall -g -O2 -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  -L/home/madplay/lib/ /home/madplay//lib/libmad.a /home/madplay//lib/libid3tag.a -lz -lm

后面加上 -static即可将这三个库静态编译到madplay中。

执行此命令后,再次查看动态库:

#arm-linux-readelf -d madplay

会出现there is no dynamic section in this file

说明成功了!

    编译完成后只需将madplay复制到根文件系统/usr/bin目录下,不需要复制动态

库。 

 

0 0
原创粉丝点击