`

在Windows下解压安装Erlang/OTP

阅读更多

 

(待考,未稳定)

 

1. 下载Erlang/OTP的win32安装包

http://www.erlang.org/download.html

下载其中的otp_win32_R14B03.exe

 

2. 用7zip把安装文件解压到硬盘。

我的解压目录是D:\java\otp_win32_R14B03

 

3. 安装VC2005运行时

在解压目录下有个vcredist_x86.exe

双击执行安装。

 

4. 尝试执行erl

解压目录下有个叫$_OUTDIR目录。

在$_OUTDIR\bin下有个叫erl.exe和werl.exe

是Erlang/OTP的命令行控制台。

如果直接执行它们,会出现这样的错误提示:

Could not load module D:\java\otp_win32_R14B03\$_OUTDIR\erts-5.8.4\bin\erlexec.dll.

这个提示的起因不明,因为这个dll确实存在。

(可以用OllyDbg找到这个提示字符串的代码在哪里,不过最好看Erlang的实现)

我猜是因为$_OUTDIR\bin的erl.exe在自动搜索../erts-*/bin这个目录,结果找不到,

于是就报出这种极其诡异且脱线的错误(想模仿Linux下的软链接"ln -s"效果?)。

于是我把D:\java\otp_win32_R14B03\$_OUTDIR\bin目录整个复制(不是剪切)到

D:\java\otp_win32_R14B03\$_OUTDIR\erts-5.8.4\bin。

然后继续尝试执行bin目录下的erl.exe和werl.exe——

启动成功,但发生crash错误:

 

 

{"init terminating in do_boot",{badarg,[{erl_prim_loader,check_file_result,3},{init,get_boot,1},{init,get_boot,2},{init,do_boot,3}]}}
(no error logger present) error: "Error in process <0.2.0> with exit value: {badarg,[{erl_prim_loader,check_file_result,3},{init,get_boot,1},{init,get_boot,2},{init,do_boot,3}]}\n"

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()


Abnormal termination

 

看样子是初始化失败,我把目录

D:\java\otp_win32_R14B03\$_OUTDIR\R14B03

下的所有文件复制到

D:\java\otp_win32_R14B03\$_OUTDIR\bin

目录下

然后继续尝试——

又出现crash错误

 

 

{"init terminating in do_boot",{'cannot load',error_handler,get_file}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()


Abnormal termination

 

看样子有点像beam模块加载失败。

查看目录

D:\java\otp_win32_R14B03\$_OUTDIR\lib

发现lib目录下的模块子目录只有doc目录,

真正的beam模块文件全在

D:\java\otp_win32_R14B03\$_OUTDIR的子目录中

我猜测erl.exe和werl.exe尝试搜索../lib目录中的.beam文件,但找不到。

于是就出现init terminating in do_boot错误。

所以我保留bin, lib, src, doc, include和erts-5.8.4这几个目录,

其它子目录全部剪切到lib目录下。

然后执行werl.exe:

D:\java\otp_win32_R14B03\$_OUTDIR\bin\werl.exe

这次终于成功了,出现正常的提示符:

 

Erlang R14B03 (erts-5.8.4) [smp:4:4] [rq:4] [async-threads:0]

Eshell V5.8.4 (abort with ^G)
1>

 

输入如下命令(后面必须带英文句号.):

 

 

q().

 

退出控制台。

 

5. 测试erl脚本的编译

在bin目录下创建一个文件tut.erl

内容为:

 

 

-module(tut).
-export([hello/1]).

hello(Word)->io:format("hello, ~s~n", [Word]).

 

其中:

第一行-module(tut).表示模块名为tut(和文件名一样)。

第二行-export([hello/1]).表示导出hello方法,带1个参数。

第三行是hello方法的实现,使用io:format输出内容到控制台。

在Erlang中变量需要以大写字母开头(也可以是下划线_开头),所以这里参数用大写开头(但参数不一定是变量)

对于io:format方法,破浪线表示转义(用法类似于C语言的printf)。

保存后打开werl.exe,输入

 

 

c(tut).

 

编译出tut.beam文件。

然后输入

 

 

tut:hello("world").

 

输出:

 

 

hello, world
ok

 

6. 关于Erlang/OTP的用法和模块帮助请参考官方文档:

http://www.erlang.org/doc/

http://www.erlang.org/doc/man_index.html

或者参考这本书:

《Programming Erlang》

自己对Erlang的了解不多,所以就不多说了。

 
应用领域的介绍可参考这个中文ppt
 
 
分享到:
评论

相关推荐

    Erlang / OTP 21.0 版本下载

    官网下载实在是困难,我把当前Erlang / OTP 21.0 版本提交到这里提供给大家和自己下载 原先积分0的现在都这么高了,为了方便大家,放出云盘地址:https://pan.百度.com/s/1hb8vPiMslXxNuJC8PvnKgg提取码wmx8

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    Designing for Scalability with Erlang/OTP

    This book is what you get if you put together an Erlang enthusiast who worked on the R1 release of OTP in 1996 and a Distributed Systems specialist who discovered Erlang/OTP

    Erlang / OTP并发编程实战

    二十多年来,在传统电信领域高并发、高可靠、高容错的严酷环境下,Erlang语言和OTP平台被锻炼得坚如磐石,浓郁的函数式特质更是恰到好处地弥补了传统命令式语言在并发编程上的固有缺陷,大大降低了构筑并发、容错、...

    erlang otp25 win安装包

    erlang otp25 win安装包

    erlang_otp_win64_25.0

    erlang_otp_win64_25.0

    windows 32位和64位 Erlang 21.0.1下载

    This guide covers Erlang/OTP requirements, recommendations, caveats and commonly used installation sources. Unsupported Versions Erlang/OTP versions older than 19.3 are not supported by currently ...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    Erlang最新版本 otp-win64-25.0.3

    Erlang最新版本 25.0.3 windows 安装文件 解压直接安装 5个币-----------------------------------------------------------------------------------------------------------------------------------------------...

    erlang绿色解压版 otp_win64 21.0.1.zip

    erlang绿色解压版 otp_win64 21.0.1 OTP 20.0 下载,OTP (Open Telecom Platform) 是一个开源的 Erlang 分发和一个用 Erlang 编写的应用服务器,由爱立信开发。Erlang / OTP 21.0.1 是一个新的主要版本,新增了一些新...

    otp, erlang/otp.zip

    otp, erlang/otp erlang/otp是一种编程语言和运行时系统,用于构建大规模可以伸缩软实时系统,具有高可用性。费 OTP是一套Erlang库,由Erlang运行时系统,大量的组件和一套Erlang程序设计原则组成。 了解更多关于...

    Erlang/OTP reference

    Erlang/OTP reference

    Erlang-otp_win64_23.0.zip

    rabbitmq安装前的环境安装,Erlang23.0 Windows64安装包,官网下载了几个小时

    Erlang/OTP并发编程实战 英文

    Erlang/OTP并发编程实战 英文 

    (学成在线day05 RabbitMQ资料)Erlang/OTP20.3版本和RabbitMQ3.7.3

    (学成在线day05 RabbitMQ资料)Erlang/OTP20.3版本和RabbitMQ3.7.3

    cowboy, 用于 erlang/otp的小型,快速,现代的HTTP服务器.zip

    cowboy, 用于 erlang/otp的小型,快速,现代的HTTP服务器 牛仔牛仔是一个小型。快速和现代的用于 erlang/otp的HTTP服务器。目标牛仔的目标是提供一个收费的完整的,以英镑为代价的小代码库。 系统以英镑低延迟和低...

    Erlang/OTP 中文手册(R11B)

    Erlang/OTP 中文手册,包含一些入门语法基础,及OTP设计原则

    erlang otp_src_20.2安装包

    此文件为otp_src_20.2.tar.gz 的二次压缩文件 解压先用unzip otp_src_20.2.zip 出来, 然后就是安装时的 tar -zxvf otp_src_20.2.tar.gz内容了, 此文件为了自己使用是方便找到,请把分数定为1分,谢谢

    Erlang OTP 20.1 Windows 64-bit Binary File

    Erlang OTP 20.1 Windows 64-bit Binary File 下载地址:http://www.erlang.org/downloads

Global site tag (gtag.js) - Google Analytics