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]
COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南 多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真 阅读详情

相关推荐

Meta-World环境实战解析:pick-place-v2中的状态观测与动作控制

本文深入解析了Meta-World中pick-place-v2环境的强化学习实战要点。文章详细拆解了39维状态观测向量的构成与意义,包括机械臂末端、物体位置及目标坐标,并揭示了默认部分可观测设置的潜在影响。同时,阐述了4维动作空间的控制逻辑与奖励函数的分阶段设计,为训练高效稳定的抓放策略提供了核心指导与实用调优技巧。

weixin_29184371的博客 77

Erlang编译并运行程序

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

weixin_48321067的博客 862

LoRa项目实战:手把手教你为ESP32选配和焊接天线(从PCB到信号测试)

本文详细介绍了为ESP32选配和焊接LoRa天线的全流程,包括天线选型、PCB布局设计、焊接工艺及信号测试。重点解析了PCB板载天线、导线天线和陶瓷贴片天线的适用场景与性能特点,并提供专业的焊接技巧和信号测试方案,帮助开发者优化LoRa模块的无线通信性能。

weixin_30470643的博客 393

erlang 简单例子的编译运行

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

weixin_34144848的博客 193

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 400

避坑指南:STM32CubeMX配置SDIO4bit模式时为什么卡在HAL_SD_ConfigWideBusOperation?

本文深入分析了使用STM32CubeMX配置SDIO 4位模式时,程序在HAL_SD_ConfigWideBusOperation函数处卡死的常见问题。文章从硬件连接、CubeMX配置、初始化序列及HAL库底层实现等多个维度剖析根源,并提供了从初始化流程优化到增强代码鲁棒性等实战解决方案,帮助开发者彻底解决这一棘手难题。

pca5navigator的博客 825

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

Windows下用Docker快速搭建SearXNG私有搜索引擎(附Dify集成配置)

本文详细介绍了在Windows环境下使用Docker快速搭建SearXNG私有搜索引擎的完整流程,包括环境准备、容器化部署、安全配置优化以及与Dify平台的深度集成方法。通过分步指导和实用配置示例,帮助开发者构建兼具隐私保护和AI增强能力的本地化搜索解决方案,特别适合需要定制化搜索服务的应用场景。

weixin_30300225的博客 336

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

3D-IC测试挑战与Tessent解决方案解析

3D-IC技术通过硅通孔(TSV)实现芯片垂直堆叠,是延续摩尔定律的关键路径。该技术面临三大核心挑战:KGD标准严苛化要求测试覆盖率达99.5%以上,存储器测试需兼容LPDDR/HBM等多种协议,逻辑堆叠需解决TSV互连的电气特性和时序验证问题。Mentor Tessent平台采用混合测试架构,结合压缩扫描测试(ATPG)和内建自测试(BIST)技术,实现100x测试数据压缩比和99.97%的TSV缺陷检出率。这些创新方案在移动SoC和高性能计算芯片中已获验证,测试时间缩短73%,缺陷逃逸率降低77%。随着

weixin_30621711的博客 376

Allegro如何去掉PCB内层未使用的过孔孔环?

在用Allegro进行PCB设计过程中,遇到铺铜铜箔被焊盘大量割断,导致铺铜不完整,这样就会导致铺铜过电流太小,影响板的性能,严重的会导致板工作不稳定,甚至不工作。解决办法:是去掉内层未使用的过孔孔环,增大过铜箔面积。

bhxc809751502的博客 2571

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

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

潘广宇的博客 348

OpenMVS :用 colmap制作自己的数据集 重建(用colmap计算位姿,将位姿转为MVS需要的格式)

数据集制作主要是在windows进行,比较方便。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 3326

programming erlang 6

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

liangjianss的博客 159

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

coderplay的专栏 196

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

gitblog_01172的博客 1101

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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、付费专栏及课程。

余额充值