Компиляция кода Erlang в Windows

Я установил 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)

Ответ 1

Для работы c(tut) в текущем каталоге должен быть файл tut.erl.

Это легко сделать, если вы запустите интерпретатор Erlang из командной строки, как это обычно бывает в таких системах, как Linux и OS X, но это не обычный шаблон в Windows. Когда вы запускаете Erlang в Windows из значка в меню "Пуск", текущий рабочий каталог по умолчанию соответствует местоположению werl.exe, где нет вашего файла tut.erl.

Чтобы ваша команда работала должным образом, вы должны изменить свой рабочий каталог как местоположение tut.erl после запуска оболочки Erlang. Если tut.erl находится на рабочем столе, команда будет выглядеть примерно так на Vista или Windows 7:

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

(Да, вам нужно использовать косые черты в обратном направлении. Обратные черты являются особыми в строках Erlang.)

В Windows XP и старше ваша папка Desktop похожа гораздо глубже. Может быть проще поставить werl.exe в систему PATH и использовать командную строку в таких системах.

Это не обязательно, но вы можете захотеть установить Cygwin. Его оболочка Bash предоставит вам более похожую на Linux или OS X среду, которая поможет вам работать с другими учебниками, которые структурированы для этих ОС.

Ответ 2

После установки Erlang откройте оболочку и выполните:

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 Подробнее о оболочке, посмотрите здесь: Модуль оболочки

Надеюсь, что это начнется.

Ответ 3

Вы также можете создать файл инициализации с именем .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.

Ответ 4

Недавно я попробовал Erlang на окнах.

используйте консольное окно, чтобы убедиться, что текстовый редактор, который вы используете, дает вашим файлам правильное расширение, т.е. filename.erl и не filename.erl.txt, как у меня!

когда я сохранил свои файлы в блокноте, он добавил .txt, поэтому я сохранил в unicode. фиксированный

Ответ 5

Если вы все еще получаете "tut: erl: none: нет такого файла или каталога", имя файла неверно. Если вы откроете командную строку Windows и перейдете на рабочий стол и наберите "dir", вы увидите, что tut.erl действительно называется tut.erl.txt. введите "ren tut.erl.txt tut.erl", и теперь ваш компилятор будет работать.

Ответ 6

Когда рабочая директория werl совпадает с файлом, который нужно скомпилировать, имя файла указывается как аргумент без всего пути. В противном случае, например, Предполагая, что tut.erl помещается в учебники C:\ErLang, можно попробовать компилировать как,

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

Примечание:

  • Без двойных кавычек: вызывает синтаксическую ошибку
  • Обратная косая черта задается с помощью escape-последовательности