- 准备工作:
- 创建madplay的编译目录 : mkdir -p /madplay/target (注意:这里的 -p 是同时创建父目录和子目录的意思)
- 进入target目录,用 rz 命令将在Windows下载好的四个源码包上传到该目录,4个源码包如下图:
用 ls 命令看是否将4个包 传进来了(注意:如果是普通用户 要用 sudo rz ,才能上传成功,否则要切换到用户主目录 即输入cd 或者cd ~ ,然后返回到 /madplay/target 目录下解压源码包(当然,也可以在用户主目录下解压好用mv 命令移动到 /madplay/target下后再切换到 /madplay/target目录))
- 安装压缩库zlib
- 解压 zlib-1.1.4.tar.gz源码包,命令为 tar -xzvf zlib-1.1.4.tar.gz 并cd 进入zlib-1.1.4源码包目录.
- 配置:命令为: ./configure --prefix=/madplay/target/ ,这时会生成一个 Makefile 文件,为下一步的编译做准备。
- 编译:命令为: make,从配置后生成的Makefile 文件中读取指令,接着进行编译
- 安装: 命令为:sudo make install (注意 :普通用户 要用sudo ,否则会提示权限不够;如果是root 用户则不用 ),另外 初学者要意的是 make 和make install 都不可少,笔者之前不知道这两者的区别,只 敲了make ,后面出错了,弄了很久才知道什么问题。。。 做到这里一般不会出现太多问题,zlib 就安装完成啦~
- 安装ID3标签编辑库 libid3tag
解压libid3tag-0.15.1b.tar.gz源码包,命令为 tar -xzvf libid3tag-0.15.1b.tar.gz ,并cd 进入libid3tag-0.15.1b源码包目录。(libid3tag-0.15.1b库需要依赖1.1.4及以上版本的zlib库,所以安装的先后次序不能颠倒。)
配置libid3tag:
命令为:CPPFLAGS=-I/madplay/target/includeLDFLAGS=-L/madplay/target/lib ./configure --enable-static --disable-shared--disable-debugging --prefix=/madplay/target/
编译:命令为: make
安装: 命令为: make install安装MPEG音频解码库libmad(支持.mp1, .mp2, .mp3解码)
解压libmad-0.15.1b.tar.gz源码包,命令为 tar -xzvf libmad-0.15.1b.tar.gz 。并cd 进入libmad-0.15.1b源码包目录。
配置:命令为: CFLAGES=-I/madplay/target/include LDFLAGS=-L/madplay/target/lib ./configure --disable-debugging --enable-static --disable-shared --prefix=/madplay/target/
编译:命令为: make
cc1: error: unrecognized command line option"-fforce-mem"
原因:Compiling libmad with gcc 3.4 or higher will produce the following error: cc1: error: unrecognized command line option “-fforce-mem”. The build option “-fforce-mem” has been kicked out of gcc, so you need to alter the makefile (just vi Makefile after you have configured, hit “/” to search for the entry and delete it) ,即gcc 3.4 或者更高版本,已经将“-fforce-mem”去除了
解决方法:
进去Makefile这个文件中: vi Makefile
找到“-fforce-mem”:在命令模式下敲 /-fforce-mem ,很快就可以找到-fforce-mem,进入编辑模式( 敲键盘上的 i ),将“-fforce-mem” 删除掉就好
保存并退出: 按下 Esc 键,然后 输入 ZZ 即可(或者wq!)
4. 安装: 命令为: sudo make install
- 安装播放器madplay
解压madplay-0.15.2b.tar.gz源码包,命令为 tar -xzvf madplay-0.15.2b.tar.gz 。。并cd 进入madplay-0.15.2b源码包目录。
- 配置:
CPPFLAGS=-I/madplay/target/includeLDFLAGS=-L/madplay/target/lib ./configure --enable-static --disable-shared--disable-debugging --without-esd --prefix=/root/madplay/madplay-0.15.2b/target
我前面说过我一开始在每一步都没有 “make install”,所以在这里配置的时候出现错误:configure: error:mad.h was not found
原因:没有安装libmad
解决方法:cd 进入libmad-0.15.1b源码包目录,sudo make install
3. 编译:make
4. 安装:sudo make install (这里 也可以不安装)
5. 测试运行: 用 rz 命令将 windows 下 下载好的一首 .mp3歌曲上传至 Linux 中,如 BrightestStar.mp3
运行 ./madplay BrightestStar.mp3
会发现这时候出错啦:
原因:百度了一下,发现:
sudo mknod /dev/dsp c 14 3 和 sudo chmod 666 /dev/dsp
(mknod 用于创建一个设备文件,mknod 的参数格式为:【 mknod 设备名 b或c 主号 次号】c 代表以字符的方式传送数据,主号代表使用的是哪一个设备驱动程序,次号定义该设备在系统中的物理位置 具体的可以参看这篇文章: https://blog.youkuaiyun.com/manchestermi/article/details/50776212 ,该文章的作者写得很详细了 ,至于chmod 即改变该目录的权限 r=4,w=2,x=1,说明将权限改为可读可写不可执行)
这时候再在libmad-0.15.1b目录下运行 ./madplay BrightestStar.mp3 就可以播放啦~
然而,还有一个问题。。。那就是根本听不到声音,
原因:原来虚拟机的播放器那里声音被调到最小了
解决方法:在虚拟机中(不是SecureCRT 中哦,因为还要进行后续命令操作) 输入 startx ,打开CentOs 的图形化界面,在右上角有个扬声器,将音量调大
然后,在右下角“声卡”那里,右键,设置:
将连接那里改为“指定主机声卡(S)”
这时候再在libmad-0.15.1b目录下运行 ./madplay BrightestStar.mp3 就可以安静地听音乐啦~
- 反思与总结:
以上就是笔者在配置安装madplay的过程中遇到的所有问题,希望这个过程记录可以帮助一些小伙伴少走一些弯路吧,当然,如果有发现错误,还请指出哦~
参考资料:https://blog.youkuaiyun.com/manchestermi/article/details/50776212