简述
madplay是一款开源的mp3播放器,mplayer是一款开源的多媒体播放器。为了让终端支持播放音频和视频,需要对madplay与mplayer进行移植。
移植madplay
资源 | 链接 |
---|---|
音乐播放器的应用程序 | madplay-0.15.2b.tar.gz |
mp3解码的库(编译后或生成*.so) | libmad-0.15.1b.tar.gz |
获取mp3文件的头信息 | libid3tag-0.15.1b.tar.gz |
文件解压库 | zlib 1.2.13 |
-
将文件拷贝到 Linux 并解压
-
创建一个编译后的文件的安装目录
-
编译安装
zlib
- 配置编译好的库的安装路径
$ cd zlib-1.2.13/ $ ./configure --prefix=../_install/ # 配置生成库的安装路径,这会生成 Makefile 文件
- 修改Makefile
15行: CC=arm-linux-gcc 35行: AR=arm-linux-ar 37行: RANLIB=arm-linux-ranlib
- 编译
zlib
库$ make clean $ make
如果编译报错, 那么就把
Makefile
文件里所有的 gcc 用 arm-linux-gcc 替换, 保存然后重新编译- 生成了两个动态库, 一个静态库
- 安装
zlib
库$ make install $ cd ../_install $ cd lib $ ls -l
- 配置编译好的库的安装路径
-
编译安装
libid3tag
- 对
libid3tag
库进行配置$ cd libid3tag-0.15.1b/ $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
这里的路径全部用的绝对路径
zlib
库头文件的路径
-I/home/link/madplay/_install/include
zlib
库库文件的路径
-L/home/link/madplay/_install/lib
- 编译安装
libid3tag
库$ make $ make install
- 对
-
编译安装
libmad
库- 对
libmad
库进行配置$ cd libmad-0.15.1b/ $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
- 编译安装
$ make && make install
编译出现错误的话修改下 Makefile 的 CFLAGS 的参数为以下(将 -force-mem 删掉)
CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce
- 对
-
编码
madplay
- 配置
madplay
源码$ cd madplay-0.15.2b/ $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared --enable-static CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
- 编译安装 madplay: 动态链接
$ make && make install
- 配置
-
将
madplay
下载到 GEC6818 开发板进行运行- 下载到开发板
- 将编译好的
libz.so
动态共享库下载到开发板的/lib
目录下
[root@GEC6818 /lib]$ rx libz.so.1.2.13 # 接收文件 [root@GEC6818 /lib]$ chmod 777 libz.so.1.2.13 # 赋予权限 [root@GEC6818 /lib]$ ln -s libz.so.1.2.12 libz.so.1 # 创建链接文件
- 最后, 由于是动态链接, 所以还需要把许多的库文件传进开发板, 否则会提示很多库文件找不到, 所以可以选择做成静态链接的程序.
- 拷贝
make
的最后一个 编译命令, 应该在倒数第三行.$ make clean $ make
- 在命令最后加上
-static
和lz
, 然后运行
arm-linux-gcc -Wall -g -O2 -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/home/link/madplay/_install/lib /home/link/madplay/_install/lib/libmad.a /home/link/madplay/_install/lib/libid3tag.a -lz -lm -static
- 当前目录会生成一个
madplay
二进制文件, 查看文件属性
- 在命令最后加上
- 拷贝
- 下载到开发板
移植mplayer
资源 | 链接 |
---|---|
多媒体播放器的应用程序 | MPlayer-1.0rc4.tar.bz2 |
解码的库(编译后或生成*.so) | libmad-0.15.1b.tar.gz |
一定要注意自己的编译器版本支不支持 mplayer
- 编译安装
libmad
库, 参考上面, 不再赘述, 也可以直接使用之前安装好的 - 将
MPlayer-1.0rc4.tar.gz
解压到统一的移植准备目录下
$ tar -zxvf MPlayer-1.0rc4.tar.gz
- 配置生成 mplayer 以及生成
Makefile
$ cd MPlayer-1.0rc4/ $ ./configure --prefix=/home/link/Porting_software/_install --cc=arm-linux-gcc --disable-gui --target=arm-linux --host-cc=gcc --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-libdvdcss-internal --disable-x11 --enable-cross-compile --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static $ make -j8 #8线程执行, 因为执行时间很长, 后面的数字写自己机器内核数 $ make install #记得要改安装路径以及编译器, 最后有-enble-static, 所以是静态链接
- 将
mplayer
下载到开发板中$ rx /usr/bin/mplayer $ chmod 777 mplayer
总结
总的来说, 还是做静态链接库比较省事, 但是比较大.
这里是因为当前版本的 mplayer 版本太低, 不能适配 5.4.0 的编译器 — 换高版本 mplayer 或降低编译器版本.