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

启动和停止Eshell
[code]
$ erl

1> halt().
[/code]

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

erl -pa Dir1 -pa Dir2 ... -pz DirK1 -pz DirK2
[/code]

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

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

运行Erl程序的几种方式:
hello.erl
[code]
-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
[/code]

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

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

接受命令行参数
[code]
-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
[/code]

使用Makefile构建Erl程序
[code]
% 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
[/code]

Getting Help
[code]
$ erl -man lists
[/code]
不过男人不支持windows

如果Erlang crash掉了,它会生成一个erl_crash.dump文件,有一个基于Web的crash分析工具
[code]
1> webtool:start().
[/code]
AI驱动芯片设计的端到端验证:AI应用架构师的全流程指南 想象你要建造一座1000层的超级摩天大楼,每个房间都有独特的功能,管道、电路、电梯系统交织如迷宫。传统的检查方式是派1000个工程师逐层逐房手动检查,耗时十年且仍可能遗漏火灾隐患。这就是今天芯片设计面临的困境:7nm芯片含百亿晶体管,相当于百亿个"房间",传统验证方法(人工编写测试用例、随机仿真)已难以应对。本文的目的,是为AI应用架构师提供一份"AI驱动芯片验证导航图",范围涵盖从验证需求分析到芯片签核的全流程,包括AI模型如何融入传统验证工具链、数据如何驱动验证效率提升、以及端到端闭环系统的构建方法。 阅读详情

相关推荐

K210开发板学习笔记(三)——STM32+K210+SD卡实现人脸识别(完整K210代码)

更新日记:2022年4月26日 更新了串口通信部分的内容,本文写的略为粗糙,恐有不当之处,希望大家不吝赐教。 人脸识别 一、MaixPy IDE开发 参考博主晨少hc的博文(https://blog.youkuaiyun.com/HuangChen666/article/details/113995079)来实现人脸识别功能,我用的硬件是亚博智能的K210开发板,在配置工程中有几步和这个博主的不一样,需要注意。 所需要的文件有:模型文件),脚本文件,ide需要的bin文件...

Embedded learner的博客 4万+

Erlang编译并运行程序

当系统尝试调用的函数属于一个尚未加载的模块时,就会出现一个异常,系统会尝试寻找缺 失模块的对象代码文件。如果缺失的模块名为Module,代码载入器就会在当前载入路 径的所有目录里搜索一个名为Module.beam的文件。只要找到相符的文件,搜索就会 停止,此文件的目标代码会被载入系统。这样一定可以准确无误的找到程序,但是,随着程序变得越来越复 杂,我们需要把它放在不同的文件包中,那么我们应该怎么去加载它们。这 就要用到makefile。c(模块名),进行编译,在使用模块名:方法名进行运行。

weixin_48321067的博客 862

别再手动算频谱了!用这个在线FFT工具,5分钟搞定JSON/CSV数据分析

本文介绍了一款高效的在线FFT工具,帮助用户快速分析JSON/CSV格式的时域数据,5分钟内完成频谱分析。通过傅里叶变换(FFT)算法,大幅提升计算效率,解决传统手动计算的痛点,适用于工业振动分析、设备故障诊断等场景。

weixin_29172201的博客 260

erlang 简单例子的编译运行

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34144848的博客 193

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 585

Arduino蜂鸣器播放《Astronomia》:从乐谱到代码的嵌入式音乐实现

在嵌入式系统开发中,通过编程控制硬件执行特定任务是核心基础。其原理在于利用微控制器生成精确的时序和频率信号,驱动执行器(如蜂鸣器、电机)完成预定动作。这项技术的价值在于实现了软件逻辑与物理世界的直接交互,是物联网设备、智能硬件开发的基石。常见的应用场景包括电子玩具的音效生成、报警器设计以及交互式艺术装置。本文以热门歌曲《Astronomia》的播放为例,具体展示了如何运用Arduino的`tone()`函数和数组数据结构,将抽象的乐谱转化为可执行的频率与延时控制代码,完整呈现了从**核心硬件解析**到**软

weixin_29796279的博客 348

Erlang erlc

erlc 命令 erlc 概要 编译器 描述 The erlc program provides a common way to run all compilers in the Erlang system. Depending on the extension of each input file, erlc will invoke the appropria

zll0927的专栏 9596

电磁兼容(EMC)整改案例(七):EFT测试失败都是IC悬空引脚惹的祸

无论任何时候,为了避免这些问题,通常建议对悬空的IO口进行适当的配置,比如设置为强推挽输出低电平、输入带上拉或下拉电阻等,以减少外部电路对IO管脚状态的影响,并提高系统的稳定性和可靠性.

linkking27的博客 1032

erlang入门之编译和运行

测试erlang脚本如下 -module(empty). -author("mmc"). %% API -export([test/1,test/0]). test()-&gt; io:format("no arg~n"). test(X)-&gt; io:format("~p~n",[X]).   编译,一种是进入erl,然后 c(empty...

weixin_33756418的博客 284

Windows11安装配置openclaw+deepseek(大龙虾)

密码可以随便设置(注意wsl系统本质上是linux系统,设置密码系统是不会像windows一样显示*点位符的),输入密码后敲回车再次输入密码,输入后敲回车。如果不小心关闭这个界面,可以再次进入powershell,输入wsl进行系统。在powershell中输入:curl -fssL https://openclaw.ai/install.sh | bash。下面是否通过第3方平台和openclaw交互,我选择j最后一项:skip for now。到下面这一步,可以通过键盘的左箭头选择Yes.

mahailiang的专栏 344

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1)从“管理系统”到“作业平台”。企业通常的做法是将线下的文档、流程线上化,IT系统是作为管理系统而存在的。而面向数字化,企业的业务作业、业务运营和决策、团队协同等业务动作已经和IT系统集成,IT系统逐步转变为作业系统。从“功能优先”到“体验优先”,如果要整体完成一项工作往往需要用户在不同系统间切换,费时费力。

沧海之巅的专栏 1094

Programming Erlang 16.7 练习:检查模块是否需重新编译

一、题目 编译Erlang文件X.erl后会生成一个X.beam文件(如果编译成功的话)。编写一个程序来检查某个Erlang模块是否需要重新编译。做法是比较相关Erlang文件和beam文件的最后修改时间戳 二、编写 主要是通过判断 .erl 文件与 .beam 文件的修改时间(精确到分),因为编译时.beam文件生成时间一般比.erl文件稍后 -module(checkModuler)...

潘广宇的博客 348

【异常】‘build.plugins.plugin.version‘ for org.apache.maven.plugins:maven-resources-plugin is missing

maven-compiler-plugin 插件版本信息没有指定导致了错误提示如下字面意思就是没有指定版本信息。

奶爸的编程之路,也就一周冷个三天 4599

programming erlang 6

6.1开启和停止erlang shell  最简单的方法是Ctrl+c(windows下ctrl+break也可以)  然后按下A   也可以erlang:half(),不过这种方法停止有时会有问题,比如数据库程序,情已停止,下次打开要修复错误,在程序中最好用q().  他会先刷新开启的文件,关闭开启的数据库,关闭OTP应用。q()是init:stop()命令在shell的别名。   ...

liangjianss的博客 159

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

修正Programming Erlang中linked driver实例的小问题

    也许很多人碰上过, 用example1_lid:start()会碰上如下错误:      ** exited: {error,could_not_load_driver} **     用gdb跟了一下, 发现其实load driver是没有问题, 问题出在load driver之后的版本匹配, driver_incorrect_version.     解决办法很简单,两步:   1...

coderplay的专栏 196

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Argo Workflows ClusterWorkflowTemplate 集群级工作流模板完全指南:Java SDK 对象模型与实战

Argo Workflows 中的 `ClusterWorkflowTemplate` 是集群作用域的 `WorkflowTemplate`,与 `ClusterRole` 一样可以在整个 Kubernetes 集群内被所有命名空间共享引用。本文以 Java SDK 自动生成的 `IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate` 模型类为核心,结

gitblog_01172的博客 1101

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Windows下Erlang的编译与运行问题

一、普通方法 命令行下编译erlang文件:先将目录切换到.erl源文件所在的目录 如:cd c:/programing/erlang(或者在erlangshell中切换:cd("dir").  查看当前工作路径:pwd().) 然后erl命令进入erlang shell中 键入c(hello). 命令进行编译,此时c:/programingerlang文件夹下会产生编译后的hello.be

huiluqiu的专栏 3082

erlang代码加载路径的设置

当用erlang 编辑的时候,代码搜索路径的设置方式如下: 1,启动erlang shell,输入命令init:get_argument(home). 可以看到erlang的home目录。 2,在home目录下面建立一个.erlang文件,里面可以加上需要搜索的路径。 例如: io:format("Start\n"). code:add_patha("."...

weixin_30680385的博客 222

Erlang模块与Erlang程序的运行方法

一、模块与程序文件     Erlang是一种函数式编程语言,当我们要完成一个项目时,总不可能把所有的函数都定义在一个程序文件中,为了开发和维护方便,通常按逻辑功能划分将其分别分散在多个程序文件中。     每个Erlang程序文件就是一个模块,文件名的扩展名部分为.erl,模块的名称必须与文件名称中的主文件名完全相同(不包括扩展名.erl)。     在Erlang程序文件中,用以下模

cloveses的专栏 6555

Erlang-元子(Atoms)

元子是在Erlang中的另一个数据类型。元子以小写字母开头. 元子只是一个简单的名字,其它什么都不是。他们不像变量可以带有一个值. -module(tut2). -export([convert/2]). convert(M, inch) -> M / 2.54; convert(N, centimeter) -> N * 2.54. 编译执行程序:

aweilark的专栏 839

数据修改文件默认beam文件+erl源文件+xml文件

数据修改文件默认beam文件+erl源文件+xml文件。

qq_20808961的博客 946

Erlang程序编译参数

其中参数-s make all表示在当前目录下查找 Emakefile 文件,并根据其配置内容进行编译, -s c q相当于在erlang shell中执行q()来退出shell。在终端中使用erl -noshell -s hello start -s init stop, 可以直接调用hello模块中的start函数。这种方法和第一种差不多,区别只是在于第一种方法是在erlang shell中使用,而第二种方法在命令行中使用。最后使用命令行执行erl -s make all -s c q进行编译,

weixin_43951537的博客 414

一些小知识点

code:get_path() 加载路径的设定值 code:add_patha() 增加目录到开头 code:add_pathz()q() 退出 = init:stop() enlang:halt() init:get_argument(home)命令行执行erlang语句: erl -eval ‘io:format(“memory:~p~n”,[erlang:memory(total

xidwong的专栏 420

erlang 顺序编程-编译和运行程序07

编译和运行程序 Erlang的运行时系统使用一种代码自动载入机制。 找到当前的载入路径值。 %% shell code:get_path(). 添加新路径 %% 在开头添加新路径 code:add_patha(Dir). %% 在末尾添加新路径 code:add_pathz(Dir). 加载模块的总列表 code:all_loaded(). 查询出错 code:clas...

灰猫 352

Progamming Erlang 通过 Makefile 自动编译 .erl 文件

通过 makefile 可以自动化一部分工作,比如编译 .erl 文件 一、在 /root/workspace/erlang/test 中新建两个 .erl 文件,分别是 test.erl ,test2.erl % test.erl -module(test). -export([hello/0]). hello() -> io:format("hello, world~n"). ...

潘广宇的博客 901

[Erlang].erl文件的一生

最初形式 File.erl1.preprocessing(预处理) compile:file(File,['P']).2.expansion(扩展) compile:file(File,['E']).3.core erlang(erlang core代码) compile:file(File,[to_core]).4.kernel erlang(erlang kernel代码) compile:f

Sunface撩技术 3326
上一篇: Programming Erlang读书笔记5: Advanced SP
下一篇: Programming Erlang读书笔记7: Concurrency
hidetobj
博客等级 码龄19年 16粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值