如何在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就可。
阅读(6790) | 评论(4) | 转发(0) |