Ejabberd编译自定义模块的正确方法

时间:2015-11-08 19:40:16

标签: erlang ejabberd

在/ opt / ejabberd目录中的ubuntu 14.04计算机上编译并安装了ejabberd 15.10版。

在旧版本中,可以使用 erlc 命令直接编译模块,然后将其粘贴到ejabberd模块目录(或符号链接),这是开发模块的非常有效的方法。

但是在使用logger.hrl中的INFO_MSG()/ 2升级到更新的ejabberd版本后,ejabberd无法加载模块。

通过将模块文件放在ejabberd src目录中并按照https://www.ejabberd.im/ejabberd-13.10ejabberd how to compile new module的建议运行make in ejabberd目录进行编译时,模块可以正常工作。

但与使用elrc命令直接编译和运行模块的旧方法相比,这是非常低效的。

后者是否采用正确的方法,如果是这样,为什么会改变?官方文档在哪里解释用后一种方法进行编译。

2 个答案:

答案 0 :(得分:0)

你可以像这样编译ejabberd模块

erlc -I /lib/ejabberd/include -o /lib/ejabberd/ebin   /home/sunil/Documents/ejabberd_custom_modules/mod_profile.erl

在此示例中, / lib / ejabberd / include 是头文件(.hrl)路径,/ lib / ejabberd / ebin *是ejabberd的二进制文件路径和' / home / sunil /Documents/ejabberd_custom_modules/mod_profile.erl 是源文件路径。

答案 1 :(得分:0)

编译自定义ejabberd模块的正确方法(由process-one建议)是: -

  • 将您的模块放入ejabberd / src文件夹。
  • 来到终端的ejabberd目录并运行命令$ sudo make

它会告诉您模块已编译。您可以在ebin目录中查看编译结果的.beam文件。

现在运行你的模块

$ sudo make install

将您的模块添加到/etc/ejabberd/ejabberd.yml的配置文件中 重启你的ejabberd,你的自定义模块就会运行。

使用erlang shell 进行编译的另一种方法是: - 启动你的erlang从ebin目录加载ejabberd模块所需的所有包含文件。

> erl -pa <your path to ejabberd/ebin>

如果要包含多个位置的文件,也可以使用空格分隔多个路径。像

> erl -pa <path1/ebin> <path2/ebin>

这将启动erlang shell。接下来你需要做的事情是: - 做

> cd("<path to your module.erl file>").

编译你的模块

> c(your module).

您的module.beam文件将在编译后生成。