Ubuntu下Erlang的开发环境配置。
首先需要声明的是这是一篇译文,只适合准备迈进Erlang大门的初级开发者,如果你有较好的英语水平,请移步
http://renzhi.ca/2010/08/03/setup-your-environment-to-develop-erlang-programs/comment-page-1/?wpmp_switcher=mobile 。欢迎各位指正共同进步。
Erlang是一个强大的平台,如果你打算要进行Erlang程序开发,此时此刻最好的开发环境莫过于Emacs。
在这篇文章中,我会列出你所需要的工具,并且会教你如何配置Erlang的开发环境。假设系统为基于Debian的Linux系统(我使用的是Ubuntu 10.04)。
首先,确保你已经安装了Erlang:
sudo apt-get install erlang erlang-base erlang-tools erlang-appmon erlang-pman erlang-observer erlang-ic erlang-parsetools erlang-toolbar erlang-et erlang-mnesia erlang-debugger erlang-percept
现在,确保你已经安装了Emacs并使其支持Erlang mode:
sudo apt-get install emacs emacs-goodies-el erlang-mode
接下来安装Distel。 Distel是Emacs的扩展,它能够让Erlang开发变得更上手,允许你将erlang代码加载到正在运行的节点,进行调试或运行。
不幸的是Distel并不在Ubuntu的软件库中,你只能从下面的链接下载Distel源程序:http://code.google.com/p/distel/downloads/list
解压并运行命令安装:
export prefix=~/.emacs.d/share/distel
make -e install
你可以改变路径装在你想安装的目录下。我安装在.emacs.d文件夹下。
我们要使用刚刚安装好的工具的话就要配置你的配置文件.emacs(译者注:在根目录下,如果找不到这个隐藏文件,可以自己新建一个放进去)。将下列配置写入.emacs中:
- ;; This is needed for Erlang mode setup
- (setq erlang-root-dir "/usr/lib/erlang")
- (setq load-path (cons "/usr/lib/erlang/lib/tools-2.6.5/emacs"load-path))
- (setq exec-path (cons "/usr/lib/erlang/bin" exec-path))
- (setq erlang-man-root-dir "/usr/lib/erlang/man")
- (require ‘erlang-start)
- ;; Load Distel stuff
- (add-to-list ‘load-path "~/.emacs.d/share/distel/elisp")
- (require ‘distel)
- (distel-setup)
- ;; Some Erlang customizations
- (add-hook ‘erlang-mode-hook
- (lambda ()
- ;; when starting an Erlang shell in Emacs, with the node
- ;; short name set to renzhi
- (setq inferior-erlang-machine-options ‘("-sname""renzhi"))
- ;; add Erlang functions to an imenu menu
- (imenu-add-to-menubar "imenu")))
- ;; A number of the erlang-extended-mode key bindings are useful in the
- ;; shell too
- (defconst distel-shell-keys
- ‘(("\C-\M-i" erl-complete)
- ("\M-?" erl-complete)
- ("\M-." erl-find-source-under-point)
- ("\M-," erl-find-source-unwind)
- ("\M-*" erl-find-source-unwind)
- )
- "Additional keys to bind when in Erlang shell.")
- (add-hook ‘erlang-shell-mode-hook
- (lambda ()
- ;; add some Distel bindings to the Erlang shell
- (dolist (spec distel-shell-keys)
- (define-key erlang-shell-mode-map (car spec) (cadrspec)))))
在上面的配置中,有三个地方需要你根据自己的环境进行修改:
- 你的Erlang安装路径。如果你用的是Ubuntu 10.04,你的路径应该和我一样,就不需要修改(译者注:可以根据whereis erlang 查看Erlang的安装路径);
- 根据你Distel安装的文件夹,Distel的路径也需要做相应的修改;
- 修改默认erlang节点的标志名称。我自己的命名为renzhi,找到这个单词并作相应的修改。这样我们就可以从Emacs直接开启Erlang程序,并给它一个简单的命名,之后我们想与它建立连接的时候就能很快的找到它。
现在所有的工具都已经安装完,所有的配置也已经设置完成了,开始使用吧。先让我们写一个简单的hello world程序。开启emacs,新建一个名为hello.erl的文件,输入下列代码:
- -module(hello).
- -export([hello/0]).
- hello() ->
- "hello world".
这里我们新建了一个hello模块(module)和一个没有任何参数的hello()函数,同时我们告诉Erlang hello()函数是有输出的。
模块的名称必须和文件相匹配,否则当你保存你的源码的时候系统会发出一个警告并建议你做相应的修改。
当你在emacs中编写Erlang代码的时候,你就在Erlang模块中了。在emacs菜单栏中你应该看到一些额外的选项,这些也叫自定义菜单。
让我们开启一个Erlang shell(译者注:Erlang shell是一个工具,类似于Windows的终端,是一个命令行交互环境,一般情况下在命令行中输入erl就可以运行Erlang shell,也可以用下面的方法开启):
- 选择Erlang菜单栏;
- 选择shell;
- 选择开启一个新的shell(start new shell);
Emacs窗口被分成两个部分,上边依旧显示我们的Erlang代码,下边的部分就是erlang shell了。
现在,移到Erlang shell部分,通过下面的命令来编译我们的代码:
c(hello).
注意结尾处的句点“.”,在Erlang的指令中一定是以一个实心的句号为结尾的。如果你前面的事都做好了,你应该看到的是和下面一样的结果:
Eshell V5.7.4 (abort with ^G)
(renzhi@shanghai)1> c(hello).
{ok,hello}
(renzhi@shanghai)2>
现在代码已经编译完了,通过下面的命令运行我们的第一个程序:
hello:hello().
下面的截图展示了我们写的第一个Erlang程序的运行结果:

就这些了。你已经创建并运行了你的第一个Erlang程序。在下一个贴中我将会描述怎么在emacs中调试你的Erlang程序。

浙公网安备 33010602011771号