在Windows上编译Erlang代码

时间:2009-08-14 16:54:30

标签: windows erlang installation compilation

我安装了Erlang 13B并尝试按照教程进行操作。

每次访问c(tut)时,都会收到错误而不是(ok, tut),因此似乎没有安装模块。谁能指出我正确的方向?

我已经尝试过Emacs,但我真的不知道如何使用它,甚至没有接近让Erlang模式工作。例如,我在哪里输入:

  (setq load-path (cons  "C:/Program Files/erl5.6.2/lib/tools-<ToolsVer>/emacs"
    load-path))
  (setq erlang-root-dir "C:/Program Files/erl5.6.2")
  (setq exec-path (cons "C:/Program Files/erl5.6.2/bin" exec-path))
  (require 'erlang-start)

6 个答案:

答案 0 :(得分:16)

要使c(tut)起作用,当前目录中必须有一个tut.erl文件。

如果从命令行启动Erlang解释器,这很容易实现,这在Linux和OS X等系统上很常见,但这不是Windows上的常用模式。当您从“开始”菜单中的图标启动Windows上的Erlang时,当前工作目录默认为werl.exe的位置,而不是tut.erl文件所在的位置。

要使命令按预期工作,必须在启动Erlang shell后将工作目录更改为tut.erl的位置。如果桌面上有tut.erl,则命令在Vista或Windows 7上将是这样的:

cd("c:/Users/myname/Desktop").

(是的,你必须使用正斜杠。反斜杠在Erlang字符串中是特殊的。)

在Windows XP及更早版本中,您的桌面文件夹隐藏得更深。将werl.exe放入系统PATH并在此类系统上使用命令行可能更简单。

没有必要,但您可能需要考虑安装Cygwin。它的Bash shell将为您提供更多类似于Linux或OS X的环境,这将帮助您使用为这些操作系统构建的其他教程。

答案 1 :(得分:10)

安装Erlang后打开shell并执行:

1> pwd().
C:/Program Files/erl5.7.1/usr
ok
2>

假设你有一个文件;桌面上的“tut.erl”。内容可能如下所示:

-module(tut).
-compile(export_all).

hello_world() ->
  hello.

您必须首先将当前工作目录的路径更改为桌面(或者您想要进行编译的位置)。也许这样:

2> cd("F:/Desktop").
F:/Desktop
ok
3>

然后你可以执行编译。

3> c(tut).
{ok,tut}
4>

然后测试模块

4> tut:hello_world().
hello
5> 

更多信息请参阅此处的文档:Erlang official documentation 有关shell的更多信息,请查看此处:Shell module

希望这能让你开始。

答案 2 :(得分:1)

您还可以在.erlang

下创建名为YourErlangInstallationPath\usr\的初始化文件

文件的内容应该如下所示;

io:format("consulting .erlang in ~p~n" ,
[element(2,file:get_cwd())]).
%% Edit to the directory where you store your code
c:cd("O:/Erlang.Umut").
io:format("Now in:~p~n" , [element(2,file:get_cwd())]).

它会自动更改工作文件夹的路径。 (显然,我的路径是O:/Erlang.Umut,你需要用你的路径替换它。)

每次启动控制台时都无需更改文件夹。控制台将能够直接访问您的erl文件。

答案 3 :(得分:1)

我最近在Windows上尝试过Erlang。

使用控制台窗口确保您使用的文本编辑器为您的文件提供正确的扩展名,即。 filename.erl而不是像我这样的filename.erl.txt!

当我在记事本中保存文件时,它添加了.txt,所以我保存在unicode中。固定

答案 4 :(得分:0)

如果您仍然“tut:erl:none:没有这样的文件或目录”,则文件名错误。如果您打开Windows命令提示符并移动到桌面并键入“dir”,您将看到tut.erl实际上名为tut.erl.txt。输入“ren tut.erl.txt tut.erl”,现在你的编译工作正常。

答案 5 :(得分:0)

当werl的当前工作目录与要编译的文件相同时,文件名将作为参数给出,而不包含整个路径。 否则,例如。假设tut.erl放在C:\ ErLang教程中,可以尝试编译为,

c("C:\\ErLang tutorials\\tut").

注意:

  1. 没有双引号:导致语法错误
  2. 使用转义序列
  3. 给出反斜杠