要启动我的程序,我会执行下一个序列:
$ erl > c(module1). > c(module2). > c(modulen). modulen:start().
是否有可能创建允许我启动程序的脚本?
您可以使用加载器脚本来负责以OTP方式启动应用程序:
-module(XYZ_app). -export([start/0]). start() -> application:start(inets), application:start(XYZ).
您通过shell脚本启动该脚本.escript
如果您打算在操作系统启动时运行构建守护进程,请注意使用,因为它们很棘手.
#!/bin/bash erl -boot start_sasl -s XYZ_app start
当然你需要你的XYZ.app
文件(只是一个例子):
{application, tinycouch, [{description, "tinycouch"}, {vsn, "0.1"}, {modules, [ tinycouch, tinycouch_app, tinycouch_sup, tinycouch_server, tinycouch_logger_h, tinycouch_utils, tinycouch_db, mod_tinycouch ]}, {registered, [tinycouch ,tinycouch_server ,tinycouch_sup ]}, {applications, [kernel, stdlib, sasl, inets]}, {env, []}, %% Application Start point {mod, {tinycouch_sup, []}}]}.
...并且所有.erl
文件都必须已编译.
请注意,如果您打算分发您的应用程序(例如Debian存储库等),您可能应该考虑使用make
文件来编译和安装您的应用程序.
最后要注意的是:你也可以使用一个boot
文件(最终的OTP方式),但我发现这些非常有限:一个启动文件将你的应用程序绑定到Erlang(和其他相关应用程序)的特定版本.您的应用程序可能能够在各种Erlang版本中运行,但您需要为要发布的每个"平台版本"都有一个单独的构建/发布过程.