编译和运行程序
Erlang的运行时系统使用一种代码自动载入机制。
找到当前的载入路径值。
%% shell
code:get_path().
添加新路径
%% 在开头添加新路径
code:add_patha(Dir).
%% 在末尾添加新路径
code:add_pathz(Dir).
加载模块的总列表
code:all_loaded().
查询出错
code:clash().
启动添加路径 -pa 在前面添加,pz在后面添加
erl -pa Dir1 -pa Dir2 ... -pz DirK1 -pz DirK2
一般是把需要添加的路径放在主目录的 .erlang 文件内
这个文件可以添加erlang代码。启动时优先读取
查询主目录位置
init:get_argument(home).
运行程序的不同方式
模块 hello.erl
-module(hello).
-export([start/0]).
start() -> io:format("Hello world~n").
1、Erlang shell 里编译运行
erl
c(hello).
hello:start().
%% 或者:
erlc hello.erl
erl -noshell -s hello start -s init stop
2、在操作系统内执行erlang函数
erl -eval 'io:format("Memory: ~p~n",[erlang:memory(total)]).'\
-noshell -s init stop
3、同过linux sh脚本启动 ,-pa后面接的是代码hello.beam文件所在目录的绝对路径
#!/bin/sh
erl -noshell -pa /home/joe/Book/code -s hello start -s init stop
4、escript 运行
#!/usr/bin/env escript
main([A]) ->
I = list_to_integer(A),
F = fac(I),
io:format("factorial ~w = ~w~n",[I,F]).
fac(0) -> 1;
fac(N) -> N * fac(N-1).
%% 结果 ./factorial 35
%% factorial 25 = 1551121004330985984000000
makefile模板
MODS清单里的任何模块都会用Erlang命令erlc Mod.erl(Mod是模块名)编译。
精简模板
.SUFFIXES: .erl .beam
.erl.beam:
erlc -W $<
ERL = erl -boot start_clean
MODS = modulel module2 module3
all : compile
${ERL} -pa '/home.../this/dir' -s modulel start
compile: ${MODS:%=%.beam}
clean:
rm -fr *.beam erl_creash.dump