我在AWS上的普通实例unix实例上安装了erlang。 现在我正在尝试安装ejabberd,但是我坚持这个特定的步骤。
我使用的安装步骤是:
sudo ./configure --with-erlang=/home/ec2-user/otp_src_17.4
sudo make
sudo make install
然而,当我进入“sudo make”时,我收到以下错误:
/home/ec2-user/otp_src_17.4/bin/escript rebar compile && :> deps/.built
==> p1_utils (compile)
==> p1_cache_tab (compile)
==> p1_tls (compile)
Compiling /home/ec2-user/ejabberd-14.12/deps/p1_tls/c_src/p1_tls_drv.c
/home/ec2-user/ejabberd-14.12/deps/p1_tls/c_src/p1_tls_drv.c:23:24: fatal error: erl_driver.h: No such file or directory
#include <erl_driver.h>
^
compilation terminated.
ERROR: compile failed while processing /home/ec2-user/ejabberd-14.12/deps/p1_tls: rebar_abort
make: *** [deps/.built] Error 1
不确定为什么会出现此错误。 Erlang肯定是安装的,因为我可以从控制台检查它的版本。
我怀疑可能存在一些配置问题?
答案 0 :(得分:0)
从ejabberd源代码判断,--with-erlang
选项处理不会确保从指定目录中包含正确编译Erlang驱动程序和NIF所需的C头文件。我认为这是一个ejabberd构建系统错误。
您需要告诉配置并在哪里找到Erlang的步骤,以确保C编译器在Erlang安装中搜索头文件。通常情况下,您可以通过明确指定CFLAGS
作为configure
步骤的一部分来执行此操作,但在这种情况下,这不会起作用,因为该变量不会进入{ {1}}构建。在这种情况下应该执行此操作的另一种方法是确保在rebar
中找到您的Erlang安装:
PATH
ejabberd构建系统在export PATH=/home/ec2-user/otp_src_17.4/bin:$PATH
./configure --with-erlang=/home/ec2-user/otp_src_17.4
make
sudo make install
中查找erl
和erlc
,然后使用找到它们的根目录查找包含构建所需的文件和库
另请注意,您可能不需要PATH
或sudo
步骤使用configure
,而只需使用make
步骤。