Centos安装madplay步骤、资源、播放音乐以及共享库路径问题解决

我根据网上的安装步骤,基本都可以完成到最后一步,但是当我进行音乐播放的时候(即直接输入madplay的时候),出现了:
error while loading shared libraries: libnet.so.1:cannot open shared object file :No such file or directory”的错误提示。

解决办法是:输入ldconfig
输入madplay后,后面出现如图所示

Centos安装madplay步骤、资源、播放音乐以及共享库路径问题解决_第1张图片
即表示安装成功。

资源提供:
MP3:https://pan.baidu.com/s/1vedZFXVetlTS3rS8-eBEtA 提取密码:sy92
Madplay安装包集合:https://pan.baidu.com/s/1UdFApAzUa8sT9e7vbEYnhA 提取密码:1tvt
此安装包也适用于Redhat。

播放音乐:输入 madplay -o wav:- test.mp3 | aplay
在这里插入图片描述

----------------------------------------------------------------------------------

一、问题出现的原因
原因是Linux下的共享库路径配置不正确。默认的linux共享库搜索路径为/lib和/usr/lib两个目录(不包含子目录),若共享库不在这两个路径(最典型的就是/usr/local/lib),不能被自动动态链接到,解决方法有四种:

1,链接时使用静态库(.a文件)。在g++命令上写入改.a文件的完整路径。

2,修改LD_LIBRARY_PATH环境变量。(临时有效,且有时候没有效果)

3,将库文件复制到可以搜索到的路径里面,这样比较狠,但是可能导致一些后即问题。

4,添加搜索路径,使用ldconfig命令(下面详细介绍)。

ldconfig几个需要注意的地方

  1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到

  2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到

比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在 /usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存 过后ldconfig一下,新的library才能在程序运行时被找到。

  1. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变 量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时 候使用。

  2. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。

  3. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。

参考于:https://blog.csdn.net/yanxiangtianji/article/details/8316562

二、安装步骤
安装步骤:(可参考)详细步骤可查看
https://blog.csdn.net/qq_15000103/article/details/76796514

1.准备

需要准备的库文件有zlib-1.1.4.tar.gz,libid3tag-0.15.1b.tar.gz,libmad-0.15.1b.tar.gz,madplay-0.15.2b.tar.gz。

zlib-1.1.4.tar.tar用于文件的压缩和解压

libid3tag-0.15.1b.tar.gz mp3的解码库

libmad-0.15.1b.tar.gz madplay的库文件

madplay-0.15.2b.tar.gz 播放程序的压缩包,mp3播放器的源码。

注意:查看是否安装了gcc和g++:

#whereis gcc

#whereis g++

如果没有安装,则需要在root下安装编译器:

#yum install gcc

#yum install gcc-c++

2.解压

1)建立存放的目标目录:
建立MP3目录 mkdir /mp3

例如:# mkdir /home/admin/mp3
2)分别解压上面几个文件
tar -xzvf /文件目录/文件名.tar.gz -C /目标目录/

例如:

     # tar -xzvf /home/admin/Desktop/zlib-1.1.4.tar.gz -C /home/admin/mp3/

    # tar -xzvf /home/admin/Desktop/libid3tag-0.15.1b.tar.gz -C /home/admin/mp3/

    # tar -xzvf /home/admin/Desktop/libmad-0.15.1b.tar.gz -C /home/admin/mp3/

    # tar -xzvf /home/admin/Desktop/madplay-0.15.2b.tar.gz -C /home/admin/mp3/

3.编译zlib

1)回到zlib解压的路径下

例如:# cd /home/admin/mp3/zlib-1.1.4/

2)执行以下命令:

a.生成Makefile

./configure

b.make生成libz.a库

make

c.再把生成的库安装到系统中,在/usr/local/lib中

make install

4.编译libid3tag

1)回到libid3tag解压的路径下

例如:
cd /home/admin/mp3/libid3tag-0.15.1b/

2)执行以下命令:

a.生成Makefile

./configure

b.make生成libz.a库

make

c.再把生成的库安装到系统中,在/usr/local/lib中

make install

5.编译libmad

1)回到libmad解压的路径下

例如:
cd /home/admin/mp3/libmad-0.15.1b/

2)执行以下命令:

a.生成Makefile

./configure

b.make生成libz.a库

make

c.再把生成的库安装到系统中,在/usr/local/lib中

make install

注意:在执行命令:# make时出错

error: unrecognized command line option “-fforce-mem”

原因是:gcc 3.4 或者更高版本,已经将其去除了,所以会出现上面的错误。

解决方式是:找到libmad configure之后的Makefile,找到包含"-fforce-mem"字符串,将其删除,就可以了。

如果删除字符串后无法保存,可另存为其他名字,删了目录下的Makefile,再把另存为的文件重命名。

6.编译madplay
1)回到madplay解压的路径下

例如:
cd /home/admin/mp3/madplay-0.15.2b/

2)执行以下命令:

a.生成Makefile

./configure

b.make生成libz.a库

make

c.再把生成的库安装到系统中,在/usr/local/lib中

make install

你可能感兴趣的:(knowledge)