madlife 交叉编译

如何在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就可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值