수색…


비고

이 섹션에서는 ocaml이 무엇인지, 그리고 왜 개발자가 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.

또한 ocaml 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. ocaml의 문서는 새로운 문서이기 때문에 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.

설치 또는 설정

OPAM 설치

OPAM 은 OCaml의 패키지 관리자입니다. 컴파일러 버전과 OCaml 라이브러리를 쉽게 빌드하고 관리합니다.

운영 체제에 OPAM을 설치하는 가장 쉬운 방법은 시스템에 패키지 관리자를 사용하는 것입니다. 예 : apt-get, yum 또는 homebrew.

Mac OSX 설치 지침

자작 수식을 업데이트하고 OPAM을 설치하십시오.

brew update
brew install opam

우분투 설치 지침

add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install ocaml opam

소스에서 컴파일

wget http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar.gz
tar xf ocaml-4.03.0.tar.gz
cd ocaml-4.03.0
./configure -prefix installation_path
make world.opt
make install

OPAM 초기화 중

OPAM이 설치되면 opam init 실행하고 지시 사항을 따르십시오.

일단 쉘에서 OCaml 인터프리터를 실행할 수 있어야합니다.

$ ocaml
        OCaml version 4.03.0

#

OCaml의 첫 번째 프로그램

이제 OCaml 배포판을 여러분이 좋아하는 운영체제에서 사용할 수 있으므로 OCaml에서 첫 번째 프로그램 인 Hello World!를 만들 수 있습니다.

우리는 OCaml 프로그램을 시작하는 다양한 방법을 가지고 있습니다.

REPL (최상위 레벨)

최상위 코드와 대화식 으로 코드를 실행할 수 있습니다. OCaml 최상위 레벨을 사용하면 OCaml 코드를 UNIX 쉘로 작성하고 실행할 수 있습니다. 그런 다음 최상위 레벨에서 코드의 유형을 즉시 확인합니다. 따라서 컴파일 및 실행없이 코드의 일부분을 빠르고 쉽게 테스트 할 수 있습니다.

ocaml 명령으로 최상위 레벨 을 시작할 수 있습니다. 그런 다음 OCaml 문장;; 끝낼 수 있습니다. 즉시 평가됩니다. 최상위 레벨 은 표현식의 유형과 값을 바로 뒤에 표시합니다.

# "Hello Worlds!";;
- : string = "Hello Worlds!"

또한 파일에 최상위 레벨 을 시작할 수도 있습니다. 이것에 대한 설명을 볼 수 있습니다.

최상위 레벨 에서 입력을 용이하게하기 위해 입력 히스토리와 같은 몇 가지 기능을 제공하는 ledit 또는 rlwrap 과 같은 도구를 사용할 수 있습니다.

 $ ledit ocaml

 $ rlwrap ocaml

바이트 코드로 컴파일

우리에게는 바이트 코드 로 컴파일되는 컴파일러와 원시 코드로 컴파일되는 다른 두 가지 컴파일러가 있습니다. 첫 번째는 Java 가상 머신의 바이트 코드 와 동일합니다. 따라서 바이트 코드 는 덜 효율적이지만 이식성이 뛰어납니다.

OCaml 컴파일러가 사용하는 확장 파일이 있습니다 :

신장 정의
.ml 소스 코드 (C의 .c )
.mli 인터페이스 (C의 .h )
.cmo ocamlc 에 의해 바이트 코드로 컴파일 된 소스 코드
.cmi ocamlc 의해 컴파일 된 인터페이스 코드
.cmx.o 원시 코드로 ocamlopt 에 의해 컴파일 된 소스 코드
.cma 라이브러리 (일부 *.cmo 버킷)의 바이트 코드
.cmxa.a 네이티브 코드의 라이브러리
.cmxs 네이티브 코드 라이브러리 (동태 적로드)

바이트 코드 컴파일러는 ocamlc 입니다.

다른 공통 옵션이 있습니다.

  • -c : 링키지 프로세스없이 소스 파일을 컴파일 (실행 파일 생성). 따라서 ocaml -c foo.ml 명령은 .cmo 파일을 생성합니다. 헤더 파일을 컴파일 할 필요가없는 C와 달리 OCaml에서 .mli 파일을 컴파일해야합니다 : ocaml -c foo.mli .

인터페이스를 먼저 컴파일해야합니다. 나중에 소스 파일을 컴파일 할 때 OCaml은 구현이 인터페이스와 일치하는지 확인하려고 시도한다.

.mli 파일은 필수는 아닙니다. .mli 파일없이 .ml 파일을 컴파일하면 OCaml은 자동으로 .cmi 파일을 생성합니다.

  • -o : 일부 .cmo 파일을 실행 파일로 컴파일합니다. 예 : ocamlc -o program foo.cmo bar.cmo . 이 파일은 첫 x ​​째 파일에 의존성이없는 종속성에 따라 정렬되어야합니다.

  • -I : 컴파일러가 컴파일에 필요한 파일 (예 : 인터페이스 또는 소스 코드)을 찾을 수있는 다른 디렉토리를 나타냅니다. 그것은 C 컴파일러의 -I 와 동일합니다.

우리는 다른 많은 옵션이 있습니다. 자세한 내용은 설명서 를 참조하십시오.

이제 hello.ml 작성하고 ocamlc -o hello hello.ml 을 사용하여이 파일을 컴파일하여 바이트 코드 프로그램을 생성 할 수 있습니다.

let () = print_endline "Hello World!"

let () = ... 은 프로그램의 첫 번째 항목입니다 (예 : C의 main 항목). 이후, 우리는 인자 "Hello World!" 와 함께 함수 print_endline (표준 라이브러리에 의해 제공됨)을 사용한다 "Hello World!" Hello Worlds 를 표준 출력에 개행 문자로 인쇄한다.

컴파일이 끝나면 .cmo 파일과 .cmi 파일이 자동으로 컴파일러와 프로그램 hello 에서 생성됩니다. 프로그램을 열 수 있으며이 파일의 상단에서 다음을 볼 수 있습니다.

#!/usr/local/bin/ocamlrun

즉, 프로그램에서 바이트 코드 (예 : JVM)를 실행하기 위해 ocamlrun 프로그램 (배포판에서 제공)이 필요합니다.

원시 코드로 컴파일

네이티브 코드를 생성하는 또 다른 컴파일러가 있습니다. 컴파일러는 ocamlopt 입니다. 그러나 생성 된 실행 파일은 다른 대부분의 아키텍처에서 작동하지 않습니다.

ocamloptocamlc 와 동일한 옵션을 사용하므로 ocamlopt -o hello hello.ml 실행할 수 있습니다. .cmx.o 파일을 볼 수 있습니다.

마지막으로 바이트 코드 / 원시 코드 프로그램에서 다음을 실행할 수 있습니다.

$ ./hello
Hello World!
$

Windows (기본) 설치

전제

이 지침은 Windows에 원시 OCaml 바이너리를 설치하는 절차를 보여줍니다. 운영 체제가 Windows 10 (Insider Preview) build 14316 이상인 경우 Windows의 Ubuntu에서 Bash를 통해 OCaml을 설치할 수도 있습니다. 이 경우 Ubuntu에 OCaml을 설치하라는 지시를 따르십시오.

OCaml과 Opam 설치

OCaml 공식 배포판을 다운로드하십시오. 여기에는 OCaml 컴파일러와 Opam 패킷 관리자가 모두 들어 있습니다. C:/OCaml 소프트웨어를 설치했다고 가정하십시오. 당신이 correcly OCaml을 설치했는지 확인하려면 cmd.exe 열고 ocaml 입력 cmd.exe .

'ocaml' is not recognized as an internal or external command, operable program or batch file 메시지 'ocaml' is not recognized as an internal or external command, operable program or batch file C:/OCaml/bin 을 경로 (환경 변수)에 추가해야합니다.

경로에 OCaml 바이너리 추가하기

Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables 에서 System Variable Path 탭을 선택한 다음 Edit 을 선택 Edit .

C:/OCaml/bin; 추가하십시오 C:/OCaml/bin; 목록에.

Cygwin 설치

Cygwin을 사용하지 않으면 Opam을 사용할 수 없습니다. 사실 cmd.exe 에서 Opam 입력 opam 을 열려고하면 다음 메시지가 표시됩니다. Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .

Cygwin을 다운로드하고 설치 프로그램을 시작하십시오. 다음 패키지를 확인하십시오.

  • 자동차
  • 디 뿌틸
  • libreadline
  • 하다
  • m4
  • mingw64-x86_64-gcc-core
  • mingw64-x86_64-gmp
  • mingw64-x86_64-openssl
  • mingw64-x86_64-pkg-config
  • mingw64-x86_64-sqlite3
  • 반점
  • 반지 짓기
  • 압축을 풀다
  • wget

C:/cygwin (64 비트 버전의 경우 C:/cygwin64 에 소프트웨어를 설치했다고 가정합니다. cmd 열고 wget (또는 C:/cygwin/bin 에있는 실행 파일 중 하나)을 입력하여 Cygwin 실행 파일을 사용할 수 있는지 확인하십시오. 실행 파일이 열리지 않으면 경로 (환경 변수)에 C:/cygwin/bin 을 추가하십시오.

Opam 구성

cmd.exe 열고 opam init 입력하여 opam init 을 구성하십시오.

그런 다음 ocamlfind (OCaml 컴파일러의 일부)를 다음과 같이 설치하십시오.

opam install ocamlfind
opam config env

ocamlfindcmd.exe 입력되어 있는지 확인 cmd.exe .

명령 opam config env 추가하는 데 사용됩니다 opam 환경 경로의 실행 파일 디렉토리. 로그 아웃 한 후에 ocamlfind 더 이상 접근 할 수 없다면, 수동으로 추가 할 수 있습니다 : C:/Users/<your user>/Documents/.opam/system/bin/ .

패키지 설치

패키지는 Opam을 통해 opam opam install xyz 명령과 함께 opam install xyz 됩니다. 여기서 xyz 는 패키지의 이름입니다.

UTop 설치

opam install utop 명령을 실행 해보 opam install utop . 오류가 없다면 utop 을 입력하면 실행 파일이 열립니다.

메시지가 표시되면

[ERROR] The compilation of zed failed at "ocaml setup.ml -build".

단일 패키지를 수동으로 설치해야합니다. 다시 입력 해보십시오.

opam install zed
opam install lambda-term
opam install utop

lambda-termutop 은 모두 설치되지 않을 수 있습니다. 문제 해결 섹션을 참조하십시오.

코어 설치

opam install core core 패키지를 설치할 수 있습니다. Windows 64 비트 버전 (및 64 비트 Cygwin)에서 다음 오류가 표시됩니다.

[ERROR] core is not available because your system doesn't comply with os != "win32" & ocaml-version = "4.02.3".

문제 해결 : 일반 파일을 만들 수 없음

다음 메시지와 함께 xyz.10.1 이라는 이름의 패키지가 설치에 실패한 경우 (xyz는 패키지의 이름이고 10.1은 해당 버전 임)

install: cannot create regular file '/cygdrive/c/Users/<your user>/Documents/.opam/system/bin/<something>': File exists

이 디렉토리에 가야합니다 :

C:\Users\<your user>\Documents\.opam\repo\default\packages\<xyz>\<xyz.10.1>\files 

xyz.10.1.install 파일을 삭제하십시오.

문제 해결 : 공유 라이브러리를로드 할 수 없습니다.

Opam의 패키지 (예 : utop )를 열려고하면 다음과 같은 오류가 나타납니다 :

Fatal error: cannot load shared library dlllwt-unix_stubs
Reason: The specified module could not be found.

opam config env 다시 실행하고 실행 파일을 다시 열어보십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow