erlang - 脚本 : exception error: undefined function piqic_erlang:main/1

标签 erlang

我在安装 piqic-erlang 时遇到问题。 当我“制作”时,我得到这个:

bash-3.2$ make
rebar compile
==> piqic-erlang (compile)
==> piqi-erlang (compile)
set -e; \
   for i in piqi_rpc.piqi piqi_tools.piqi; do \
      ../piqic-erlang/piqic-erlang  $i; \
   done
escript: exception error: undefined function piqic_erlang:main/1
 in function  escript:run/2 (escript.erl, line 752)
 in call from escript:start/1 (escript.erl, line 276)
 in call from init:start_it/1 
 in call from init:start_em/1 
make[1]: *** [piqi_rpc_piqi.erl] Error 127
ERROR: Command [compile] failed!
make: *** [all] Error 1

可能是什么问题?

更新: 感谢您的帮助,但是在“make”之前的“make deps”不起作用。我仍然遇到同样的错误。现在,我尝试直接从/piqi-erlang/priv/bin 运行脚本 piqic-erlang,它再次找不到“main”函数:

 bash-3.2$ ./piqic-erlang 
 escript: exception error: undefined function piqic_erlang:main/1
   in function  erl_eval:local_func/5 (erl_eval.erl, line 544)
   in call from escript:interpret/4 (escript.erl, line 781)
   in call from escript:start/1 (escript.erl, line 276)
   in call from init:start_it/1 
   in call from init:start_em/1

为什么 escript 看不到“main”函数?

最佳答案

piqic-erlang 没有被正确编译,因为它的 src erl 文件是符号链接(symbolic link),rebar 没有发现它,因为它使用 filelib: fold_files/5 不返回符号链接(symbolic link)! (可能是错误 introduced in R17.1fixed in R17.1.2 )

作为解决方法,您可以手动编译它然后重新制作,这里是命令(假设您在 piqi-erlang root 中):

cd piqic-erlang; erlc -o ebin src/*.erl; cd ..; make

关于erlang - 脚本 : exception error: undefined function piqic_erlang:main/1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705512/

相关文章:

exception - 在一系列 Erlang 匹配中,我如何判断哪一个失败了?

erlang - 卡在 {"init terminating in do_boot",{undef,[{rmbrDb,start,[],[]},

erlang - Cassandra thrift Erlang 插入

erlang - 如何让 Erlang 在 Linux 上显示 UI 组件 "debugger"和 "observer"?

function - 如何在 eshell(Erlang shell)中定义一个函数?

list - erlang列表操作

list - 将字符串 append 到 Erlang 中的字符串列表

Erlang:创建光盘模式

Erlang、SSH 和authorized_keys

Erlang:proplists:get_value/2 还是模式匹配?