Music Player Daemon移植到嵌入式系统[一]
***************************************************************************************************************************
作者:EasyWave 时间:2013.10.06
类别:Linux 应用Music Player Daemon 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
一:简介
Music Player Daemon是一款广受欢迎的音乐服务端软件,提供了丰富的用于音乐播放的控制接口,支持MP3、Ogg Vorbis、FLAC、AAC、Mod和wave等音频格式,以及播放列表管理。采用C/S架构开发的MPD,用户可以使用各种前端来控制MPD的播放行为,也可以使用终端甚至网页来控制,因此能够满足各类用户的需求。
二:需要哪些组件
由于Music Player Daemon需要用到以下关键组件:
1):Glib库,因此需要移植Glib库,不过这里不采用glib-2.12.13,最终选择glib-2.14.6的版本,因为在ncmpc-0.20的应用中需要用到Gregex,由于glib-2.12.13并不支持regex,而glib-2.14.6是可以支持的,故选择glib-2.14.6版本。
2):ogg库,在Music Player Daemon中采用插件的方式来加载。
3):FLAC库,在Music Player Daemon中采用插件的方式来加载。
4):libmad库,在Music Player Daemon中采用插件的方式来加载。
5):AAC库,在Music Player Daemon中采用插件的方式来加载。
有了以上的几个库,基本上是可以播放FLAC、OGG、MP3、AAC几种格式的音频文件了。
三:编译组件
1): Glib组件的编译
由前面的博文可知,编译Glib需要用到Gettext和libiconv等。如下所示:
如果想要编译成功glib就需要用到上图中前面三个库项目。gettext的编译脚本配置如下:
#!/bin/bashexport LDFLAGS="-L/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/lib"export CFLAGS="-I/usr/local/arm_linux_4.2/arm-linux/include"export PKG_CONFIG_PATH="$INSTALL_PATH/lib/pkgconfig" #autoreconf -ivfif [ -f config.log ]; thenmake distcleanfiecho am_cv_func_working_getline=yes>arm-linux.cache &&./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \ --build=i486-linux-gnu \ --cache-file=arm-linux.cache \ --disable-dependency-tracking \ --enable-shared=yes \ --enable-static=no \ --with-gnu-ldif [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
libiconv的编译脚本如下:
export PKG_CONFIG_PATH="$INSTALL_PATH/lib/pkgconfig" #autoreconf -ivfif [ -f config.h ]; thenmake distcleanfi./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \ --build=i486-linux-gnu \ --enable-shared=no \ --enable-static=yes \ --with-gnu-ldif [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
Glib编译脚本如下:
export LDFLAGS="-L$INSTALL_PATH/lib -L/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/lib"export CFLAGS="-I$INSTALL_PATH/include"export PKG_CONFIG_PATH="$INSTALL_PATH/lib/pkgconfig" export LIBS="-lasprintf -lgettextpo -lgettextsrc -lgettextlib -lintl"#autoreconf -ivfif [ -f config.h ]; thenmake distcleanfiecho glib_cv_stack_grows=no>arm-linux.cache && echo ac_cv_type_long_long=yes>>arm-linux.cache &&echo glib_cv_uscore=no>>arm-linux.cache &&echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache&&./configure --prefix=$INSTALL_PATH \ --host=arm-none-linux-gnueabi \ --build=i486-linux-gnu \ --cache-file=arm-linux.cache \ --enable-maintainer-mode \ --enable-debug=no \ --enable-ansi=no \ --enable-gc-friendly \ --disable-mem-pools \ --enable-threads \ --disable-rebuilds \ --disable-visibility \ --disable-largefile \ --enable-iconv-cach=auto \ --enable-shared=yes \ --enable-static=no \ --enable-fast-install=yes \ --disable-libtool-lock \ --enable-included-printf \ --enable-regex \ --enable-gtk-doc=no \ --enable-man=no \ --with-gnu-ldif [ $? -eq 0 ]; then make if [ $? -eq 0 ]; then make install exit 0 fifiexit 1
编译成功之后,就可以看到Glib库了,如下:[只列举一部分]
其它的第三方库,在下一篇文章再来分析,如下所示的第三方Audio编解码库。。。