【问题标题】:Load new module in Kamailio在 Kamailio 中加载新模块
【发布时间】:2026-01-22 06:55:02
【问题描述】:

我想问一下,如何在 Kamailio 4.1.2 中加载新模块? 实际上,当我尝试编译我的 kamaiio.cfg 时,我遇到了一个问题 我有错误:

root@kamailio:/usr/local/# kamailio -c kamailio.cfg
loading modules under /usr/local/lib64/kamailio/modules/
 0(25392) ERROR: <core> [sr_module.c:587]: load_module(): ERROR: load_module: could not find module <websocket> in </usr/local/lib64/kamailio/modules/>
 0(25392) : <core> [cfg.y:3408]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 323, column 12-25: failed to load module
 0(25392) ERROR: <core> [cfg.y:3272]: yyparse(): cfg. parser: failed to find command ws_handle_handshake
 0(25392) : <core> [cfg.y:3411]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 1083, column 27: unknown command, missing loadmodule?

ERROR: bad config file (2 errors)

当我实际查看/usr/local/lib64/kamailio/modules/ 时,有一些模块,但缺少websocket.so。 那么,如何在 Kamailio 中获取和加载模块?

感谢您的帮助!

【问题讨论】:

    标签: sip-server kamailio openser


    【解决方案1】:

    您尚未安装模块 websocket。编辑源代码目录下的 modules.lst 文件,将 websocket 添加到 include_modules 变量中。如果您没有 modules.lst,请执行以下操作:

    make cfg
    

    另一种做法是:

    make cfg include_modules="websocket"
    

    默认情况下,kamailio 的构建系统仅编译和安装与应用程序核心具有相同依赖关系的模块。对于 websocket,您需要安装 libunistring 和 openssl (libssl) 开发包。

    【讨论】:

    • 是的,我之前修过,只是忘了更新这个胎面。谢谢
    • 修改完modules.lst文件后还需要做什么吗?这个新模块什么时候会安装在当前服务器上?在 Kamailio 重启期间?
    • 您必须重新安装 kamailio(再次执行“make install”),然后重新启动它。
    【解决方案2】:

    步骤将新模块加载到 Kamailio 服务器。 (如果上述答案不适合您,请尝试)

    1. 直接检查默认模块中是否存在模块/usr/local/lib64/kamailio/modules
      如果找到,请在 kamailio.cfg 文件的加载模块部分添加 loadmodule "module_name.so"
    2. 如果在默认模块目录中没有找到该模块,您可以在默认模块源代码目录/usr/local/src/kamailio-4.4/kamailio/modules中查看该模块的源代码强>。
    3. 如果找到源代码,进入模块目录。然后通过以下命令创建模块的共享对象文件(.so)。

      ./配置
      制作
      进行测试
      进行安装

    4. 然后你会得到一个共享对象文件(.so)。将该文件复制到默认模块目录中。并从步骤 1 中提到的 kamailio.cfg 文件加载此模块。

    5. 如果默认源代码目录下不存在模块源代码,需要从网上下载源代码。并按照第 3 步和第 4 步操作。

    【讨论】: