Lisp Flavored Erlang (LFE) 在 Windows 上工作吗?我使用的是 LFE 0.6/Erlang 5.8.2/Windows 7 32 位。我将 lfe shell 脚本复制为批处理文件(用 %1 %2 %3 %4 替换 $@),它给了我这个:

D:\projects\checkout\lfe>lfe
{"init 终止于 do_boot",{undef,[{lfe_boot,start,[]},{init,start_it,1},{init,start_em,1}]}}

崩溃转储被写入:erl_crash.dump
init 终止于 do_boot()

最佳答案

这里的问题是 Erlang 找不到 LFE ebin 目录。解决这个问题的两种方法是:

  • 在启动 LFE 时使用显式 -pa <lfe ebin dir> 参数,无论是在 lfe.bat 脚本中还是在您调用它时。简单但硬连线。
  • 使用 ERL_LIBS 环境变量。这在 code 模块文档 http://erlang.org/doc/man/code.html 中有描述。如果你创建一个额外的 Erlang 库目录,比如 c:\projects\erlang ,像 LFE 一样删除遵循 Erlang 应用程序目录结构的 Erlang 应用程序,并将 ERL_LIBS 指向它,那么代码服务器会自动将它在那里找到的 ebin 目录添加到它的代码路径中。

  • 这也在 How do I install LFE on Ubuntu Karmic? 中描述,但在 UNIX 上下文中。
    ERL_LIBS 功能绝对应该得到更好的宣传。

    编辑: 回复@Shantanu Kumar 的评论。

    我无法访问 Windows 计算机,因此无法对其进行正确测试。问题似乎是使用 lfe_boot 尝试启动端口程序 ttysl ,它似乎在 Windows 上不起作用,至少在运行 erl.exe 时不会。一些尝试的解决方案:
  • 改用 werl.exe。这可能有效,但无论如何我都会这样做。
  • 尝试使用 werl.exe -pa ebin 以正常方式启动 Erlang(以获得正确的加载路径)并使用 lfe_shell:server().
  • 手动启动 LFE shell
  • 尝试使用 werl.exe -pa ebin -noshell -s lfe_shell start 启动 Erlang。这将 lfe_shell 作为 shell 运行,但 ^G 将不可用。

  • 此外,虽然使用它很好,但您不需要使用 LFE shell 来运行 LFE,您可以使用普通的 Erlang shell 并以“普通”方式调用 LFE 函数。两种 io 格式可能会让您有点精神 split ,但没有问题。 :-)

    希望这可以帮助。

    关于erlang - Windows 上的 Lisp flavor Erlang,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4698591/

    10-12 17:30