`
hideto
  • 浏览: 2690651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Programming Erlang读书笔记6: 编译和运行Erl程序

阅读更多
启动和停止Eshell
$ erl

1> halt().


查看/添加代码查找路径
code:get_path().
code:add_patha(Dir).
code:add_pathz(Dir).

erl -pa Dir1 -pa Dir2 ... -pz DirK1 -pz DirK2


查看载入的module和查看出错的module
code:all_loaded().
code:clash().


可以将code:add_patha()和code:add_pathz()扔到.erlang文件

运行Erl程序的几种方式:
hello.erl
-module(hello).
-export([start/0]).

start() ->
    io:format("Hello world~n").

%%%%%%%%%%%%%
$ erl
1> c(hello).
2> hello:start().
%%%%%%%%%%%%%
$ erlc hello.erl
$ erl -noshell -s hello start -s init stop


Quick Scripting
erl -eval 'io:format("Memory: ~p~n", [erlang:memory(total)]).' -noshell -s init stop


hello.sh
#!/bin/sh
erl -noshell -pa /home/joe/code -s hello start -s init stop


接受命令行参数
-module(main).
-export([main/1]).

fac(0) -> 1;
fac(N) -> N*fac(N-1).

main([A]) ->
  I = list_to_integer(atom_to_list(A)),
  F = fac(I),
  io:format("factorial ~w = ~w~n", [I, F]),
  init:stop().

%%%%%%%%%%%%
$ erlc main.erl
$ erl -noshell -s main main 25
factorial 25 = 15511210043330985984000000


使用Makefile构建Erl程序
% Makefile.template
# leave these lines alone
.SUFFIXED: .erl .beam .yrl

.erl.beam:
  erlc -W $<

.yrl.erl:
  erlc -W $<

ERL = erl -boot start_clean

# Here's a list of the erlang modules you want compiling
# If the modules don't fit onto one line add a \ character
# to the end of the lien and continue on the next line

# Edit the lines below
MODS = module1 module2 \
       module3 ... special1 ...\
       ...
       moduleN

# The first target in any makefile is the default target.
# If you just type "make" then "make all" is assumed (because
# "all" is the first target in this makefile)

all: compile

compile: ${MODS:%=%.beam} subdirs

## special compilation requirements are added here

special1.beam: special1.erl
  ${ERL} -Dflag1 -WO special1.erl

## run an application from the makefile

application1: compile
  ${ERL} -pa Dir1 -s application1 start Arg1 Arg2

# the subdirs target compiles any code in
# sub-directories

subdirs:
  cd dir1; make
  cd dir2; make
  ...

# remove all the code

clean:
  rm -rf *.beam erl_crash.dump
  cd dir1; make clean
  cd dir2; make clean


Getting Help
$ erl -man lists

不过男人不支持windows

如果Erlang crash掉了,它会生成一个erl_crash.dump文件,有一个基于Web的crash分析工具
1> webtool:start().
分享到:
评论
3 楼 337240552 2012-06-27  
表示不会整
2 楼 jahson 2009-01-15  
很实用的入门文章,刚开始学习,谢谢
1 楼 blackanger 2008-01-08  
来学习下Erlang,

PS : 发现个blog:http://hedito.iteye.com/

相关推荐

    erlang-23.2.1-1.el7.x86-64.rpm

    Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ ...

    erlang programming

    6. **热升级与无中断服务**:Erlang支持代码热升级,即在不中断运行的情况下更新应用程序代码,这对于保持高可用性和服务连续性至关重要。 7. **并发性能优化**:Erlang的并发性能优化涉及进程数量的控制、消息队列...

    Programming Erlang.pdf

    在Erlang中,程序通过多个轻量级进程(Lightweight Processes)实现并发,每个进程都可以独立运行,并行执行任务。这种设计使得Erlang非常适合处理大量并发连接,如网络服务。 ### 3. Erlang与思维模型 文件中提到...

    《Programming Erlang》

    6. **热更新**:Erlang支持运行时代码更新,可以在不中断服务的情况下修复bug或添加新功能,这对于在线服务尤其重要。 7. **并发与分布式**:Erlang的VM(Virtual Machine)允许在多核甚至多机器上并行运行,轻松...

    programming erlang src code

    6. BEAM虚拟机:Erlang运行在BEAM虚拟机上,这是专为Erlang设计的虚拟机。源码中可能包含BEAM虚拟机的部分实现,帮助我们理解Erlang程序的执行过程。 7. OTP(开放电信平台)框架:OTP提供了许多预定义的行为和库,...

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...

    erlang版本的protobuf(erl_protobuffs)

    3. **编码与解码**:在Erlang程序中,你可以使用生成的模块来编码和解码消息。例如,编码一个`Person`消息: ```erlang Encoded = erl_protobuffs:encode(message, person, #person{name="John Doe", id=123, ...

    读书笔记:ErlangOTP设计原则中文文档.zip

    读书笔记:ErlangOTP设计原则中文文档

    erlang 24.0 龙芯 loongarch64 预编译版本

    例如,可能改进了并发处理能力,增强了垃圾回收机制,或者对编译器和运行时系统进行了优化,使得Erlang程序在龙芯平台上运行得更加高效稳定。然而,具体的改动需要查看Erlang官方的发行说明才能得知。 总的来说,这...

    Programming Erlang

    在分布式编程方面,《Programming Erlang》涵盖了节点间通信、分布式进程和分布式应用程序的构建。Erlang的BEAM虚拟机允许跨节点通信,使得构建分布式系统变得相对简单和高效。 除此之外,书中还会涉及错误处理和...

    erl_nif 扩展erlang的另外一种方法

    `erl_nif`(Erlang NIF,Native Implemented Functions)允许开发者用C语言编写函数,这些函数可以无缝地在Erlang虚拟机(VM)中运行。NIFs的主要目的是处理Erlang无法高效执行的任务,如硬件交互、加密算法或与操作...

    erlang_mysql编译好了

    这里提到的“erlang_mysql编译好了”可能是指已经成功编译了这样的库,它提供了一个Erlang应用程序,使得Erlang进程可以直接与MySQL服务器通信。这个过程通常涉及以下步骤: 1. **获取源代码**:你需要找到Erlang ...

    Pragmatic.Programming.Erlang.2nd.Edition

    《Pragmatic Programming Erlang 第二版》由Erlang之父Joe Armstrong撰写,是一本深入浅出地介绍了Erlang语言特性和编程技巧的专业书籍。本书不仅适用于初学者入门,也为经验丰富的开发者提供了新的见解和技术指导。...

    Erlang安装手册

    ### Erlang安装手册知识点解析 #### 一、Erlang简介 Erlang是一种通用、并发、...通过编译和运行该模块来检查Erlang是否正确安装和配置。 以上是对Erlang及其核心特性的详细介绍,希望对您了解和学习Erlang有所帮助。

    Centos7安装RabbitMQ的文档和安装包(包含erlang安装包).rar

    6. **监控和维护**: 通过`rabbitmqctl`命令可以监控RabbitMQ的状态,如查看节点、列出用户、检查队列等。定期检查日志文件以确保一切正常运行。 至此,您已成功在CentOS 7上安装并配置了RabbitMQ 3.7.12,同时...

    Programming Erlang second edition

    《Programming Erlang second edition》是Joe Armstrong的经典著作,它是Erlang编程语言领域的权威指南,该书第二版于2013年首次发行。书中不仅覆盖了Erlang的核心语言和框架基础知识,还包括了重要的社区项目,例如...

Global site tag (gtag.js) - Google Analytics