在erlang应用程序中使用外部库

时间:2013-10-19 12:49:56

标签: erlang zeromq

在我的Erlang应用程序中,我想使用外部库(erlzmq2)。我是erlang的新手,不知道如何打包或编译它。目前我正在使用rebar进行编译,如果答案基于编辑rebar.config文件,那对我来说会更有用。

2 个答案:

答案 0 :(得分:5)

幸运的是,您的图书馆似乎是螺纹钢打包的,因为它的仓库根部有一个rebar.confighttps://github.com/zeromq/erlzmq2

假设您尚未配置依赖项,则只需将其添加到您自己的rebar.config

{deps, [
   {erlzmq2, "2.*", {git, "git://github.com/zeromq/erlzmq2", {tag, "2.1.11"}}}
]}.

这可以添加“2.1.11”版本。你也可以对抗头部:

{deps, [
   {erlzmq2, "3.*", {git, "git://github.com/zeromq/erlzmq2"}}
]}.

“deps”条目的格式为

  • 应用程序的名称,如x.app文件(erlzmq2.app.src line 1
  • 中所示
  • 正则表达式与其x.app文件(erlzmq2.app.src, line 4)中的“vsn”匹配。如果您想绕过这种健全性检查,可以使用“。*”。
  • 一个元组,给出了可以从中获取依赖关系的位置。如果是git,除了网址外,您还可以为其添加branchtag元组。

我认为,使用Rebar和Reltool打包应用程序是一个全新的问题,而且是一个复杂的问题。但如果您的应用程序相当小/一次性/非正式,您可以尝试使用Rebar的“escriptize”命令。

如果您的应用是“foo”,那么您需要在src中foo.erl拥有相应的main/1。然后添加到您的rebar.config

{escript_incl_apps, [erlzmq2]}.

并从命令行(获取代表和编译后),运行

  

钢筋escriptize

Rebar会将您所有的二进制文件和“encrypt_incl_apps”的二进制文件填充到一个作为可执行文件运行的文件中。

答案 1 :(得分:0)

只是为了获得更多其他信息,您可以创建一个名为lib的单独文件夹,并将lib路径导出到ERL_LIBS,如果这不是钢筋兼容的话。如果库足够好你可以把它放在OTP lib目录中,但不建议这样做!