1.场景

外呼平台升级对应的freeswitch模块时候,按照往常正确步骤操作;然后控制台启动freeswitch的时候

进入/freeswitch/bin下面;执行脚本:

./freeswitch

然后查看到fs控制台输出为:

image.png

2.问题处理

2.1 排查说明

1、freeswitch报加载mod_sofia失败,于是去freeswitch下的
freeswitch/conf/autoload_configs/去查看 modules.conf.xml,发现对应模块已经加载:
image.png

2.2 LD_LIBRARY_PATH说明

1、由于其他机器上相同包模块类似,并且加载运行后正常,由于所有包的加载读取是基于/etc/profile的临时环境变量的:
image.png

2、非常多的软件没有root权限安装会比较困难,主要就是因为各种系统库文件,也就是LD_LIBRARY_PATH这个环境变量里面的文件。查看其它库文件目录:echo $LD_LIBRARY_PATH 里面一般可以看到七八个已经定义好的库文件搜索路径。
当执行函数动态链接.so时,如果此文件不在缺省目录下 /lib和/usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH 假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式: LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH (newdirs是新的路径串), 实例如下;

export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH

3、需要找到系统的库文件地址

比如:我们有时候安装:liblzma时候,gcc编辑器找不到我们系统的liblzma这个库文件,就是我们的LD_LIBRARY_PATH定义的所有路径里面都没有这个liblzma这个库文件。

验证gcc编辑器能否找到指定库文件的方法是:

gcc -llzma --verbose

事实上,我们的机器肯定是有这个库文件的,只不过是不在LD_LIBRARY_PATH定义的所有路径里面,简单查找如下:

locate liblzma 
/export/apps/anaconda2/2.4.1/lib/liblzma.a
/export/apps/anaconda2/2.4.1/lib/liblzma.la
/export/apps/anaconda2/2.4.1/lib/liblzma.so
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5.0.5 

为了解决我,我们需要添加:

export LD_LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LD_LIBRARY_PATH
export LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LIBRARY_PATH 

4、为什么修改LD_LIBRARY_PATH?

因为运行时动态库的搜索路径的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib和/usr/lib;

这个顺序是compile gcc时写在程序内的,通常软件源代码自带的动态库不会太多,而我们的/lib和/usr/lib只有root权限才可以修改,而且配置文件/etc/ld.so.conf也是root的事情,我们只好对LD_LIBRARY_PATH进行操作。

5、永久性添加

每次我使用该软件都需要临时修改库文件,因为上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的 Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATHexport 语句写到系统文件中,例如 /etc/profile/etc/export~/.bashrc 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统咯。

2.3查看设置的环境变量

通过以下命令:

echo $LD_LIBRARY_PATH

输出的:
image.png

发现环境变量出问题了,解决办法:
1、关闭当前窗口 重新执行echo $LD_LIBRARY_PATH
2、在当前窗口:将LD_LIBRARY_PATH环境变量设置为空,执行source,然后再设置为正确值即可。

按照步骤1修改后:
image.png

然后启动freeswitch,即可。


startshineye
91 声望26 粉丝

我在规定的时间内,做到了我计划的事情;我自己也变得自信了,对于外界的人跟困难也更加从容了,我已经很强大了。可是如果我在规定时间内,我只有3分钟热度,哎,我不行,我就放弃了,那么这个就是我自己的问题,因为你自己...