2009-08-14 43 views
10

我安裝了Erlang 13B並試圖按照教程。在Windows上編譯Erlang代碼

每當我到達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) 
+0

我你在同一時間發現Erlang和Emacs(這兩個都是很棒的軟件)我建議你把Emacs放在一邊作爲開始。不要同時學習兩個systemz。您可以在Erlang中使用任何文本編輯器,並且Notepad ++也做得很好。 – 2011-12-23 19:18:46

回答

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"). 

(是的,你必須使用正斜槓反斜槓是特殊二郎字符串。)

在Windows XP和更舊版本的桌面文件夾被埋得更深。將werl.exe放入系統PATH並在這些系統上使用命令行可能會更簡單。

這不是必須的,但您可能要考慮安裝Cygwin。它的Bash shell將爲您提供更多的Linux或OS X環境,這將幫助您使用針對這些操作系統構建的其他教程。

+1

順便說一下,一旦在其他Erlang代碼的目錄中有一個* .beam文件,就可以在* .beam文件和werl.exe之間建立一個Windows文件關聯,這樣當你雙擊它們時,Erlang會加載他們最終隱含地將其工作目錄設置爲文件的位置。 – 2009-08-14 17:13:32

9

安裝後二郎開殼,做:

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 module

希望這會得到你的開始。

+3

哦,順便說一句,在windows中,我所擁有的絕對最佳技巧是爲每個項目創建一個werl.exe的Windows快捷方式,然後將「Run in」屬性更改爲當前工作目錄。另一個技巧是在「目標」屬性中添加標誌,例如-sname,-setcookie(在分佈式環境中很有用),或許-pa向代碼搜索路徑添加其他路徑。更多關於這些信息在這裏:http://erlang.org/doc/man/erl.html – 2009-08-14 17:20:05

+0

感謝您抽出時間回答我的問題,但我不能讓c(tut)工作,我仍然得到這個: (「F:/桌面」)的Erlang(BEAM)仿真器版本5.6.2 [smp:2] [異步線程:0] Eshell V5.6.2(中止與^ G) 1> C:/ Program Files/erl5.6.2/usr ok 2> c(tut)。 ./tut。erl:none:沒有這樣的文件或目錄 錯誤 3> 因爲所有的教程似乎都假設這些模塊已經安裝,我認爲它們是標準配置;我似乎無法追蹤自己的任何模塊,這是一個下跌。 – Niall 2009-08-24 17:34:41

+1

您的命令cd(「F:/ Desktop」)。正在觸及Windows命令行問題,即cd無法在驅動器盤符之間更改目錄。修改您的erlang快捷方式將工作目錄設置爲F: btw help()。顯示shell命令。 – danio 2009-09-16 10:48:52

1

你還可以根據YourErlangInstallationPath\usr\

創建一個名爲.erlang初始化文件的文件應該是這個樣子的內容;

 
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文件。

1

我最近在窗戶上試過Erlang。

使用控制檯窗口確保您使用的文本編輯器爲您的文件提供正確的擴展名即。 filename.erl而不是filename.erl.txt就像我的!

當我在記事本中保存我的文件時,它添加了.txt文件,所以我保存在unicode中。固定

0

如果你仍然得到「tut:erl:none:no such file or directory」,則文件名是錯誤的。如果你打開一個Windows命令提示符並移動到你的桌面並鍵入「dir」,你會看到tut.erl真的名爲tut.erl.txt。鍵入「ren tut.erl.txt tut.erl」,現在你的編譯會起作用。

0

當werl的當前工作目錄與要編譯的文件相同時,文件名將作爲參數給出,而不包含整個路徑。 否則,例如。假設tut.erl被放置在C:\二郎教程,可以嘗試編譯的,

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

注:

  1. 沒有雙引號的:導致語法錯誤
  2. 反斜槓使用給定轉義序列
相關問題