`

在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 reference

    本节详细介绍了如何在UNIX或Windows系统上安装Erlang/OTP。 ##### 1.1.1 UNIX系统安装 **介绍** Erlang/OTP系统作为一个压缩的tar文件分发,为浏览在线HTML文档,需要Netscape或支持框架的类似浏览器。系统安装后...

    erlang-otp-win64位 25.3版本

    在安装"erlang-otp-win64位 25.3版本"时,首先需要下载对应的安装包,如"otp_win64_25.3.exe"。这个文件是一个自解压的可执行程序,双击后会引导用户进行安装过程。安装过程中,通常会接受默认设置,或者根据需求...

    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 是一个新的主要版本,新增了一些新...

    最新版 erlang安装包 otp_src_21.3.tar.gz

    在Linux CentOS系统上安装Erlang OTP源码包 otp_src_21.3.tar.gz,你需要遵循以下步骤: 1. **系统准备**: - 首先确保你的CentOS系统是最新的,可以通过`sudo yum update`命令来更新。 - 安装必要的编译工具和...

    erlang_otp_win64_20.2

    在下载并解压"otp_win64_20.2.exe"后,你可以安装Erlang OTP的这个版本,从而在Windows 64位环境下编写和运行Erlang程序。安装完成后,可以通过命令行界面(如cmd或PowerShell)来启动Erlang shell,执行Erlang代码...

    Erlang_otp_win64_24.0.zip

    “windows”表明它是为Windows平台设计的,开发者可以在Windows环境下利用Erlang进行开发。“rabbitmq”是基于Erlang开发的消息队列系统,广泛应用于微服务架构中,实现异步处理和解耦。“开发语言”表明Erlang是一...

    Erlang-otp_win64_23.0 和 rabbitmq-server-3.8.5

    在Windows 64位环境下安装和配置Erlang OTP和RabbitMQ是开发和部署相关应用程序的关键步骤。 首先,让我们详细讨论Erlang OTP的安装过程: 1. **下载Erlang OTP**: 从Erlang Solutions官网...

    erlang_win64.rar

    3. 在安装过程中,确保选择合适的安装路径,并勾选“添加Erlang到系统路径”选项,以便在命令行中可以直接使用erl命令。 4. 完成安装后,可以通过在命令行输入`erl`来启动Erlang shell,验证Erlang是否正确安装。 ...

    otp_win64_20.3-Erlang.zip

    只有一个条目:"otp_win64_20.3-Erlang",这可能是整个Erlang OTP 20.3的解压后的目录或安装程序本身,可能包含了所有必要的库、可执行文件和其他支持文件,以便在Windows 64位环境下运行Erlang系统。 Erlang OTP ...

    otp_win32_19.1

    在Windows环境下安装OTP 19.1,通常需要运行像“otp_win32_19.1.exe”这样的可执行文件,这是一个自解压安装程序。用户执行这个文件后,会引导用户通过安装向导进行一系列步骤,包括选择安装路径、配置环境变量等,...

    otp_win64_20.1.exe

    标题“otp_win64_20.1.exe”所指的是Erlang编程语言的一个特定版本的Windows 64位安装程序。Erlang是一种面向并发、分布式和高可靠性系统的编程语言,广泛应用于电信、银行、互联网和即时消息系统等领域。这个文件是...

    otp_src_19.1.tar.gz + otp_win64_22.0.exe

    在Linux环境下安装RabbitMQ之前,首先需要确保已经安装了Erlang OTP环境,因为RabbitMQ依赖于它。有了Erlang OTP后,可以通过包管理器(如apt或yum)或者从官方网站下载源代码进行RabbitMQ的安装。安装完成后,还...

    Erlang开发环境搭建

    本文将指导读者如何在Windows平台下搭建Erlang开发环境,包括安装Erlang OTP、Emacs W32、Distel等工具,并配置Erlang mode和Distel。 一、安装Erlang OTP Erlang OTP是Erlang的官方实现,提供了完整的开发环境。 ...

    otp_win64_20.3.rar

    1. 首先,解压`otp_win64_20.3.rar`,运行`otp_win64_20.3.exe`安装Erlang 20.3。 2. 安装过程中,按照提示配置环境变量,确保Erlang可执行文件路径被添加到PATH环境变量中。 3. 下载RabbitMQ 3.7.3的Windows安装包...

    otp_win64_R15B01.rar

    压缩包内的唯一文件"otp_win64_R15B01.exe"是一个可执行文件,这意味着用户下载后可以直接在Windows环境中运行,无需其他额外的解压步骤。通常,这样的可执行文件会包含OTP的安装程序,用户可以通过它来安装和配置 ...

    erlang_版本24.3.4.4

    在安装Erlang 24.3.4.4之前,首先需要了解你的操作系统是否支持。Erlang支持多种平台,包括Windows、Linux、macOS等。在下载otp_src_24.3.4.4压缩包后,你需要解压并按照以下步骤进行编译和安装: 1. **解压源码**...

    Erlang 运行环境的安装文件

    - **Windows**:运行解压后的安装程序 `.msi` 文件,按照向导指示完成安装。 - **Linux**:如果你有 root 权限,可以通过命令行来安装。例如,对于基于 apt 的系统(如 Ubuntu),可以使用 `sudo apt-get install ...

    erlang_environment_win64_21.0.1.zip

    在Windows 10环境下安装Erlang,首先需要解压"erlang_environment_win64_21.0.1.zip" 文件,然后运行 otp_win64_21.0.1.exe 安装程序。安装过程中,用户可以选择自定义安装路径、是否创建桌面快捷方式以及是否将...

    erlang 24.2安装包

    在安装Erlang 24.2之前,你需要确保你的操作系统满足其最低要求。Erlang支持多种操作系统,包括但不限于Linux、macOS和Windows。对于Linux用户,确保你的系统上安装了必要的编译工具,如GCC和Make。对于macOS和...

Global site tag (gtag.js) - Google Analytics