【问题标题】:Lisp Flavored Erlang on WindowsWindows 上的 Lisp 风格的 Erlang
【发布时间】:2011-01-15 08:03:38
【问题描述】:

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


    【解决方案1】:

    这里的问题是 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。这将作为 shell 运行 lfe_shell,但 ^G 将不可用。

    虽然使用它很不错,但您不需要使用 LFE shell 来运行 LFE,您可以使用普通的 Erlang shell 并以“正常”方式调用 LFE 函数。使用两种 io 格式,您可能会变得有点精神分裂,但没有问题。 :-)

    希望这会有所帮助。

    【讨论】:

    • 我按照建议做了,得到了这个:C:\temp\lfe>erl -pa ebin -noshell -noinput -s lfe_boot start =ERROR REPORT==== 18-Jan-2011::00 :22:52 === 进程 出错,退出值:{badarg,[{erlang,register,[user,]},{user,start_port,1}]}跨度>
    • 第二个选项(“werl.exe -pa bin”后跟“lfe_shell:server().”)有效。它也适用于普通的 erl.exe;但是,当我使用 werl.exe 或 erl.exe 指定“-noinput”或“-noshell”或“-s lfe_shell start”时,它开始导致错误。
    【解决方案2】:

    我很抱歉;我知道这个帖子基本上已经死了,但是我没有找到关于这个话题的其他帖子,所以在这里回复似乎是合适的。

    我相信我找到了一种行之有效的方法。真的很简单:只需使用 MSYS2 和 Mingw-w64 构建 LFE,然后通过 ./bin/lfe 从构建目录运行它。

    似乎需要进行一个调整:bin/lfe 的最后一行似乎需要调整以调用“werl”而不是“erl”。老实说,我不知道这是为什么;我对 Erlang 耳熟能详,无法说出原因。

    我还在我的个人博客上稍微详细地记录了这一点:http://www.vultaire.net/blog/2016/05/02/installing-lisp-flavored-erlang-on-windows/

    希望这对某人有所帮助!

    【讨论】:

    • 是的,这种方式有效。谢谢!我想添加有关这种方式的其他信息。我不止一次更改该 Makefile。加上个人博客帖子中描述的所有操作:1)我将 $(BINDIR)/lfe%: 替换为 $(BINDIR)/lfe:(这是该脚本文件的第 120 行),2)安装“man”包由 pacman 包管理器提供。
    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2010-11-27
    • 1970-01-01
    • 2010-09-06
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多