2013-10-19 2 views
0

Erlang 응용 프로그램에서 외부 라이브러리 (erlzmq2)를 사용하고 싶습니다. 나는 erlang에 초보자이며 그것을 포장하거나 컴파일하는 법을 모른다. 현재 rebar.config 파일 편집을 기반으로하는 대답이 나에게 더 유용 할 경우 편집을 위해 철근을 사용하고 있습니다. 당신을위한 다행히erlang 응용 프로그램에서 외부 라이브러리 사용

답변

5

, 당신의 라이브러리가 자사의 repo의 루트에 rebar.config 가지고 있기 때문에, 철근 포장 된 것으로 나타납니다 : 그냥이 추가 것, https://github.com/zeromq/erlzmq2

는 종속성이 아직 구성되지가 가정하여 rebar.config 자신의 :

이것은 "2.1.11"자료를 추가하기 위해 노력
{deps, [ 
    {erlzmq2, "2.*", {git, "git://github.com/zeromq/erlzmq2", {tag, "2.1.11"}}} 
]}. 

. 당신은 또한 단지 머리에 일할 수 : 그 x.app 파일 (erlzmq2.app.src line 1)

  • (A)에 본

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

    는 "deps"항목의 형식은 응용 프로그램의

    • 이름입니다 정규식은 x.app 파일에서 "vsn"과 일치합니다 (erlzmq2.app.src, line 4). 이 온 전성 체크를 무시하려면 ". *"를 사용할 수 있습니다.
    • 종속성을 가져올 수있는 위치를 제공하는 튜플. git의 경우 URL에 branch 또는 tag 튜플을 지정할 수 있습니다.

    철근 및 Reltool 사용하여 응용 프로그램은 완전히 새로운 질문, 내가 생각하는, 그에서 복잡한 하나는 최대 포장. 그러나 응용 프로그램이 매우 작거나 일회성/비공식적 인 경우 Rebar의 "escriptize"명령을 사용해보십시오.

    응용 프로그램이 "foo"인 경우 main/1 인 src에 foo.erl이 필요합니다. 그런 다음 rebar.config에 추가 :

    {escript_incl_apps, [erlzmq2]}. 
    

    및 명령 줄에서 (담당자를 받고 컴파일 후)

    가 실행

    철근 escriptize

    철근이 물건 모든 바이너리와의 그 실행 파일로 실행되는 단일 파일에 "encrypt_incl_apps".

  • +0

    라이브러리가 로컬 파일 시스템에있을 때 세 번째 필드 (튜플)은 무엇이 될까요?/lib /입니다. 외부 라이브러리를 설치하는 이상적인 위치 ?? –

    +0

    로컬 수정을 했습니까? 디스크 공간이 1k 개인 소중한 시스템에 있습니까? 네트워크에 액세스 할 수없는 시스템에 있습니까? 이러한 경우가 아니면 원격 라이브러리를 참조하는 표준 Rebar 실습을 사용하는 것이 좋습니다. –

    +0

    좋습니다. 나는 표준 참조 관행을 사용합니다. 내 응용 프로그램과 함께 erlzmq를 성공적으로 빌드 할 수 있습니다. 그러나 "Context = erlzmq : context()"와 같은 코드에서 참조 할 때 '모듈을로드 할 수 없습니다'라는 불만으로 종료됩니다.나는 그것이 어떤 연계 문제라고 생각한다. 어떻게하면 이것을 제대로 수행 할 수 있을지 모른다. –

    0

    libpath라는 별도의 폴더를 만들고 lib 경로와 ERL_LIBS를 내보낼 수 있습니다. 라이브러리가 충분하다면 OTP lib 디렉토리에 같은 것을 넣을 수 있습니다. 그러나 권장하지 않습니다!

    관련 문제