0

我在启动 Kamailio 4.3 版时遇到问题。我从源代码安装了 Kamailio,模块存储在默认目录/usr/local/lib64/kamailio/modules中。我正在使用 Kamailio 提供的 json 模块,但无法加载。

Kamailio 关于 json 模块的文档可在此处找到: http ://www.kamailio.org/docs/modules/3.4.x/modules/json.html

文档指出,在加载模块之前,您需要我安装的所需库 libjson。当我启动 kamailio 并通过 cat 记录日志文件kamailio start; cat /var/log/kamailio.log | grep error时,出现以下错误:

Jan  8 12:43:53 localhost kamailio: ERROR: <core> [sr_module.c:576]: load_module(): could not open module </usr/local/lib64/kamailio/modules/json.so>:    /usr/local/lib64/kamailio/modules/json.so: undefined symbol: is_error
Jan  8 12:43:53 localhost kamailio: : <core> [cfg.y:3432]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 109, column 12-20: failed to load module

第 109 行显然是正确的:

loadmodule "json.so"

更多信息:

ldd json.so
linux-vdso.so.1 =>  (0x00007ffc33e97000)
libjson-c.so.2 => /lib64/libjson-c.so.2 (0x00007f24d8110000)
libc.so.6 => /lib64/libc.so.6 (0x00007f24d7d7c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f24d8527000)

有没有其他人遇到过类似的问题,或者有人知道解决方案吗?值得一提的是,我在CentOS 6.7上运行 kamailio 。

4

1 回答 1

0

is_error(p) 应该是一个宏,查看您的 json.h 文件(可能位于 /usr/include/json-c/json.h)并查看它是否包含同一文件夹中的“bits.h”。在 bits.h 中应该定义宏 is_error()。

如果你没有那个,也许它是一个定制的库。

作为旁注,kamailio.cfg 中 json 操作的替代方法是使用 jansson 模块。

于 2016-01-24T21:37:21.097 回答