免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1243 | 回复: 0
打印 上一主题 下一主题

ayer播放mp3成功! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-07 17:23 |只看该作者 |倒序浏览

昨天晚上尝试编译mplayer,遇到数不清的错误,直接导致我大脑短路
mplayer涉及到的库实在是太多了。。。。。。。。说不定哪就会出问题
同时参考5篇编译的教程mplayer,最后编译出来的mplayer文件竟然不能用orz
早上发现文档中还有一篇介绍编译madplay的,抱着试试看的心情尝试下,竟然成功了!
音质相当不错,感觉比我的mp3还好!
/usr/bin # ./madplay -i /tmp/1.mp3
MPEG Audio Decoder 0.15.2 (beta) -Reading data from NAND FLASH without ECC is not recommended
Copyright (C) 2000-2004 Robert Leslie et al.
s3c2410-uda1341-superlp: audio_set_dsp_speed:44100 prescaler:66
          Title: 高达一年战争秘闻录
         Artist: Taja
          Genre: Other
s3c2410-uda1341-superlp: audio_set_dsp_speed:44100 prescaler:66
下面转载那篇编译madplay的文档
==================================================================
现在有很多的播放器可以移植到arm9上,你mplayer,madplay等。但发现移植mplayer时遇到了一个很致命的文件错误,怎么也解决不了,<<mplayer在2410上的移植.pdf>>中也没有相关的方法,我只好暂时耽下,换了另外一个播放器madplay.
1. 移植madplay前的准备。
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://www.gzip.org/zlib/zlib-1.1.4.tar.gz
中找到。
为了编译这个播放器,还需要一个交叉编译器,我用的是arm-linux-gcc 3.4.1版本,网上很多文章都说用arm-linux-gcc 2.95.3这个交叉编译器,但是我在用它配置(./configure)libid3tag的时候,它最后老是说configure文件的某一行有错, check "config.log" for detail。没办法,只好用3.4.1版本的编译器。
2. 开始编译
    2.1. 用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下,我把它放到了/usr/local/arm/3.4.1/arm-linux目录下。./configure --prefix=/usr/local9/arm/3.4.1/arm-linux。
   再修改(不能跟上面的步骤调转)makefile文件:
   CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
   AR=/usr/local/arm/3.4.1/bin/arm-linux-ar rcs
   RANLIB=/usr/local9/arm/3.4.1/bin/arm-linux-ranlib
make ,make install ,编译好之后就可以在上面prefix指定的目录下的lib目录下找到libz.a这个库。
   2.2. 编译libid3tag
./configure CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc --prefix=/usr/local/arm/3.4.1/arm-linux --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/usr/local/arm/3.4.1/arm-linux/include LDFLAGS=-L/usr/local/arm/3.4.1/arm-linux/lib
其中,--disable-shared --enable-static是指定为静态编译。不过我发现这样并不能够进行编译。至于如何进行表态编译,我将在下面中进行介绍。
make, make install
2.3. 编译libmad
./configure CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc --prefix=/usr/local9/arm/3.4.1/arm-linux --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/usr/local9/arm/3.4.1/arm-linux/include LDFLAGS=-L/usr/local9/arm/3.4.1/arm-linux/lib
然后,make ,make install
2.4. 编译madplay
./configure CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc --prefix=/usr/local/arm/3.4.1/arm-linux --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/usr/local/arm/3.4.1/arm-linux/include LDFLAGS=-L/usr/local/arm/3.4.1/arm-linux/lib
然后,make ,make install
编译完成后,查看了一下madplay这个可执行文件的大小,大概237K左右,我猜想应该是用了动态编译的原因,于是把它下载到板子上试了一下,输入
$> ./madplay
./madplay: /lib/libc.so.6: version `GLIBC_2.3' not found (required by ./madplay)
我就更加确定上面的--disable-shared --enable-static 参数并没有让它进行静态的编译,后来又用 file madplay试了一下,输出:
madplay: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped
果然是动态编译的,那么应该如何进行表静态的编译呢?我在网上找呀,都没有说具体的解决方案,只是说在make之后输出的最后的编译命令后加上- static,开始不太明白,还是以为只是加上--enable-static命令,我又仔细地体会了这句话的意思,后来就按自己的想法试了一下,如下:
/usr/local/arm/3.4.1/bin/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 -L/usr/local/arm/3.4.1/arm-linux/lib /usr/local/arm/3.4.1/arm-linux/lib/libmad.a /usr/local/arm/3.4.1/arm-linux/lib/libid3tag.a -lz -lm -static
上面这一个命令arm-linux-gcc 的最后一个参数static是我自己加上去的。在终端找上以上命令后,很快就编译完毕了,我又到madplay目录下看一下madplay文件的大小, 820多K!!!,太好了,我知道可能是成功了,就把它下载到板子中,敲入:
$> ./madplay pig.mp3
美妙的歌曲荡漾在我的耳边,真是高兴呀!!cheer!
=========================================================================
文中提到了使用静态编译,我还是使用了动态编译器,用那个200多k的madplay文件
同时把3.4.1编译器中几个新生成的lib库文件拷贝到开发板的lib库中就可以正确运行了


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81599/showart_1921475.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP