求助:Asterisk启动报错,缺失Libjansson库文件libjansson.so.4
解决Asterisk启动时找不到libjansson.so.4的问题
这个问题我之前帮不少同行排查过,核心就是系统没法定位到指定版本的jansson共享库,下面几个步骤按顺序试,基本都能搞定:
先确认库是否安装及版本匹配
先检查系统里有没有装对应版本的jansson库:- Debian/Ubuntu系用命令:
dpkg -l | grep jansson - RHEL/CentOS系用命令:
rpm -qa | grep jansson
如果输出里没有libjansson4(Debian系)或者对应.so.4版本的包,直接安装: - Debian/Ubuntu:
sudo apt-get install libjansson4 - RHEL/CentOS:
sudo yum install libjansson(注意确认安装的版本是否对应.so.4,有些发行版可能包名不同)
- Debian/Ubuntu系用命令:
如果已安装但系统找不到,添加库路径到系统配置
先找到libjansson.so.4的实际位置:find / -name libjansson.so.4 2>/dev/null
假设找到的路径是/usr/local/lib:- 临时生效(重启后失效):
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH,之后再启动Asterisk试试 - 永久生效:创建配置文件
sudo nano /etc/ld.so.conf.d/jansson.conf,写入路径/usr/local/lib,保存后运行sudo ldconfig刷新系统库缓存
- 临时生效(重启后失效):
用软链接兼容高版本库(临时方案)
如果系统里只有更高版本的jansson库(比如libjansson.so.5),可以临时创建软链接来兼容:
先找到高版本库的位置:find / -name libjansson.so.* 2>/dev/null
然后创建软链接(替换成你找到的实际路径):sudo ln -s /usr/lib/x86_64-linux-gnu/libjansson.so.5 /usr/lib/x86_64-linux-gnu/libjansson.so.4
最后运行sudo ldconfig生效。不过这个是权宜之计,优先安装对应版本的库更稳定。自行编译Asterisk的情况
要是你是源码编译的Asterisk,可能编译时没正确指定jansson库路径,或者编译后没把库路径加入系统配置。可以重新编译Asterisk,确保编译过程中能检测到libjansson.so.4,或者把编译生成的jansson库路径添加到系统LD配置里。
内容的提问来源于stack exchange,提问作者user364023
相关产品推荐
相关产品推荐

