Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228735
  • 博文数量: 29
  • 博客积分: 878
  • 博客等级: 上士
  • 技术积分: 1114
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-12 14:49
文章分类

全部博文(29)

文章存档

2012年(29)

分类: LINUX

2012-04-12 10:25:03

如何在PC和arm中的虚拟机中制作一个mp3 player。
需要准备的库文件有zlib-1.2.3.tar.gz,libid3tag-0.15.1b.tar.gz,libmad-0.15.1b.tar.gz,madplay-0.15.2b.tar.gz。
zlib-1.2.3.tar.tar用于文件的压缩和解压
libid3tag-0.15.1b.tar.gz mp3的解码库
libmad-0.15.1b.tar.gz madplay的库文件
madplay-0.15.2b.tar.gz 播放程序的压缩包,mp3播放器的源码。
在PC环境下配置和编译madplay,并使用madplay播放mp3.

1.安装zlib-1.2.3.tar.gz
解压过后,进入源码目录。
linux中.a后缀为静态库,.so文件为动态库。解压后的库文件可在/usr/lib中查看
先要对其进行配置,生成Makefile。
执行./configure(保证configure文件是可执行的就可)
make
make生成libz.a库
再把生成的库安装到系统中
make install
在/usr/local/lib中。
后续的安装与此相同。

2.安装libid3tag-0.15.1b

3.安装libmad-0.15.1b
安装的时候出现一个错误。
cc1: error: unrecognized command line option “-fforce-mem”
解决方式是:找到libmad configure之后的Makefile
找到包含"-fforce-mem"字符串,将其删除,就可以了。
原因是gcc 3.4 或者更高版本,已经将其去除了,所以会出现上面的错误。

4.安装madplay-0.15.2b

5.执行madplay
./madplay filename.mp3
又出现错误
./madplay: error while loading shared libraries: libmad.so.0: cannot open shared object file: No such file or directory
有网友是这么解释的
软连接只是一个躯壳。动态链接库的版本不对。libmad.so.0这是你需要的,虽然那里存在一个libmad.so.0,但是它是指向其它的版本的一个软连接,所以程序就会发生读取错误的信息了。解决方法就是降低那个动态链接库的版本,直接搞一个过去,或者卸载现在的,安装较低版本的。
意思就是要重新下个低版本的库。
我是参考另外一个网友的解决方法的
I looked for libmp3lame.so and found one in /usr/local/lib (evidently, ffmpeg couldn’t see it there; ffmpeg was searching for libmp3lame.so.0 in /usr/lib/, not in /usr/local/lib/). It was clear that /usr/local/lib/libmp3lame.so is a symlink to/usr/local/lib/libmp3lame.so.0.0.0. So all I had to do was making one moresymlink in /usr/lib/, pointing at /usr/local/lib/libmp3lame.so.0.0.0:
虽然目的不一样,但是出现的错误是一样的。大意是要为这个库文件在/usr/lib这个位置建立同步连接。
所以我为两个库文件建立了连接
ln -s /usr/local/lib/ libmad.so.0  /usr/lib/libmad.so.0
ln -s /usr/local/lib/  libid3tag.so.0  /usr/lib/ libid3tag .so.0
然后执行上述播放命令就可以了。

交叉编译时与上述过程相同,但是在配置的时候要做些修改。
1.安装zlib
用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下
./configure --prefix=/usr/local/arm/3.4.1/arm-linux. --prefix是便于寻找头文件和库文件
修改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 --disable-debugging -disable-shared --prefix=/usr/local/arm/3.4.1/arm-linux
make 
make install
说明:--host指明库运行的环境arm-linux不是ix86-pc-linux.
-disable-shared 编译器默认是动态连接共享库的。这里指明为静态连接(关键)。

3.编译libmad
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.4.1/arm-linux CC=arm-linux-gcc
make
make install 

4.编译madplay
./configure --host=arm-linux CC=arm-linux-gcc --disable-debugging --disable-shared 
make 
make install
完成以后把生成的可执行文件madplay下载到开发板中
执行./madplay filename.mp3就可。
阅读(6686) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

十七岁的回忆2012-04-14 12:06:06

比较有用,顶一个吧~楼主继续

zhongli_i2012-04-13 17:05:08

夏冰软件: 不错啊.....
继续学习

夏冰软件2012-04-13 16:58:12

不错啊

☆彼岸★花开2012-04-13 12:38:24

CLFS手册 里面有没有详细介绍???没有的其他地方呢???