Ubuntu 22.04下用rules_erlang构建Erlang Hello World遇版本不匹配问题求助
解决rules_erlang构建Erlang项目时的版本不匹配错误
问题分析
错误提示Erlang version mismatch (Expected UNKNOWN, found 24.2.1)说明rules_erlang无法识别系统中安装的Erlang版本,默认期望版本为UNKNOWN,与实际的24.2.1不匹配。同时你的Erlang代码存在语法错误,会导致后续编译失败。
修复步骤
1. 指定Erlang版本到erlang_config
修改WORKSPACE.bazel中的erlang_config调用,明确指定系统Erlang的版本和路径:
erlang_config( version = "24.2.1", otp_path = "/usr" )
这会告诉rules_erlang使用系统中已安装的24.2.1版本Erlang,消除版本不匹配的验证错误。
2. 修复Erlang代码的语法错误
src/hello_world.erl中hello() -存在语法错误,需要改为hello() ->:
-module(hello_world). -compile(export_all). hello() -> io:format("hello world~n").
3. 重新执行构建命令
运行以下命令重新构建项目:
bazel build //...
额外验证(可选)
如果构建后需要运行这个模块,可以使用Bazel启动Erlang shell并调用函数:
bazel run @erlang//:erl
在Erlang shell中执行:
hello_world:hello().
会输出hello world。
内容的提问来源于stack exchange,提问作者Vertexwahn
相关产品推荐
相关产品推荐

