首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下调Erlang/OTP后加载/重新编译钢筋模块

下调Erlang/OTP后加载/重新编译钢筋模块
EN

Stack Overflow用户
提问于 2018-08-21 07:57:28
回答 2查看 2.9K关注 0票数 3

我希望使用erlang客户端库与mqtt代理为我的一个项目进行通信。因此,我使用rebar3 3的内置模板启动了一个应用程序,并添加了emqttc作为依赖项。由于记录器(emqttc依赖于gen_logger)和tuple_calls编译器选项是不够的,所以根据这个职位,我不得不降级为erlang@20。

现在降级erlang的问题是,rebar3 3的命令(clean/ compile /shell/report等)没有像预期的那样工作,而且我以前用rebar3构建的项目没有编译,我看到了这个错误消息:

= REPORT==== 21-2018年8月-2018年::12:54:29 ===加载/usr/local/bin/rebar 3/rebar/ebin/rebar3.===失败:坏文件记录:异常错误:未定义函数rebar 3:escript.erl/2 (escript.erl,759行)在从init的调用中从init:start_em/1调用:do_boot/3 =ERROR REPORT==== 21-8月-2018::12:54:29 === BEAM /BEAM_LOAD.c(1863年):错误加载模块rebar3:此BEAM文件是为运行时系统的以后版本而编译的,而不是20。要修复这个问题,请用20个编译器重新编译这个模块。(使用操作码160;此仿真器只支持最多159)。

我已经卸载和重新安装了rebar3,在网络上查找这一点,但没有什么是明确的和特定的钢筋。如能对此提供任何帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2019-02-25 10:19:32

这可能不是你问题的确切答案。但它可能会给你和想法。

那么使用Docker呢?这是一个简单的方法来保持你的环境干净整洁。

如果使用docker,则只需将新的erlang版本作为环境变量包含在Dockerfile中即可。

ENV OTP_VERSION="20.3.6"

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 05:23:35

检查您的_build/prod/rel/YOURAPPNAME/目录。很可能它有一个与您的erlang版本不匹配的版本。您可以安全地删除此目录并使用rebar3编译进行重新编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51944134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档