织梦CMS - 轻松建站从此开始!

罗索

移植madplay到S3C2410

jackyhwei 发布于 2010-09-06 10:18 点击:次 
现在有很多的播放器可以移植到arm9上,你mplayer,madplay等。但发现移植mplayer时遇到了一个很致命的文件错误,怎么也解决不了,<<mplayer在2410上的移植.pdf>>中也没有相关的方法,我只好暂时耽下,换了另外一个播放器madplay.
TAG:

现在有很多的播放器可以移植到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.2.3.tar.gz。其中前面的三个包可以在http://sourceforge.net/project/showfiles.php?group_id=12349下载,后一个包可以在http://www.gzip.org/zlib/zlib-1.2.3.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,并且把库生成到交叉编译环境的库目录下,我把它放到了/tmp/edukit-2410/mp3/install目录下。./configure --prefix=/tmp/edukit-2410/mp3/install。
   再修改(不能跟上面的步骤调转)makefile文件:
   CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
   AR=/usr/local/arm/3.4.1/bin/arm-linux-ar rc
   RANLIB=/usr/local9/arm/3.4.1/bin/arm-linux-ranlib
make ,make install ,编译好之后就可以在上面prefix指定的目录下的lib目录下找到libz.a这个库。

   2.2. 编译libid3tag
./configure --prefix=/tmp/edukit-2410/mp3/install --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/tmp/edukit-2410/mp3/install/include LDFLAGS=-L/tmp/edukit-2410/mp3/install/lib
其中,--disable-shared --enable-static是指定为静态编译。不过我发现这样并不能够进行编译。至于如何进行表态编译,我将在下面中进行介绍。
make, make install

2.3. 编译libmad
./configure --prefix=/tmp/edukit-2410/mp3/install --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/tmp/edukit-2410/mp3/install/include LDFLAGS=-L/tmp/edukit-2410/mp3/install/lib
然后,make ,make install

2.4. 编译madplay
./configure --prefix=/tmp/edukit-2410/mp3/install --host=arm-linux --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/tmp/edukit-2410/mp3/install/include LDFLAGS=-L/tmp/edukit-2410/mp3/install/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
果然是动态编译的,那么应该如何进行表静态的编译呢?

此时得到的madplay是动态编译(生成的文件大约300K)的,我们要把它变成静态编译。

我们需要拷贝make以后的最后一个链接的命令(就是make最后链接一些库的命令,arm-linux-gcc ...........,在最后加上 –static ,然后安装,就可以得到静态链接的madplay程序。

上面这一个命令arm-linux-gcc 的最后一个参数static是我自己加上去的。在终端找上以上命令后,很快就编译完毕了,我又到madplay目录下看一下madplay文件的大小, 820多K!!!,太好了,我知道可能是成功了,就把它下载到板子中,敲入:
$> ./madplay shanghaitan.mp3
美妙的歌曲荡漾在我的耳边,真是高兴呀!!cheer!

=========================================================================

文中提到了使用静态编译,我还是使用了动态编译器,用那个200多k的madplay文件

同时把3.4.1编译器中几个新生成的lib库文件拷贝到开发板的lib库中就可以正确运行了

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201009/10094.html]
本文出处:网络 作者:秩名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容