С самого начала с ocaml и я борюсь с различными компиляторами и инструментами. Например. ocamlopt
, ocamlc
, ocamlbuild
, corebuild
и так далее. Итак, как мне скомпилировать следующее?Basic Ocaml: Как скомпилировать это?
open Core.Std
module Regex = Re2.Regex
let ls pattern =
let pat = Regex.create_exn pattern in
let matcher = Regex.matches pat in
Sys.ls_dir "."
|> List.filter ~f:matcher
|> List.iter ~f:(fun s -> print_string s; print_newline())
let() =
match In_channel.input_line stdin with
| None -> print_string "No Input"
| Some pat -> ls pat
В utop
я могу просто #require "re2"
и идти оттуда.
Без включения модуля регулярных выражений я бы просто использовал corebuild ls.native
, считая, что приведенный выше код помещается в ls.ml
.
[править]
ли до сих пор пытались
ocamlbuild -use-ocamlfind -package core -package re2
который выплюнуть
ocamlfind ocamldep -package core -package re2 -modules ls.ml > ls.ml.depends
ocamlfind ocamlc -c -package core -package re2 -o ls.cmo ls.ml
+ ocamlfind ocamlc -c -package core -package re2 -o ls.cmo ls.ml
ocamlfind: Error from package `threads': Missing -thread or -vmthread switch
Command exited with code 2.
Так после того, как некоторые прибегая к помощи я привел к this blog я попытался
ocamlbuild -tag thread -use-ocamlfind -package core -package re2
который выкладывает более 6000 строк, что выглядит как make
выход перед отказом с:
collect2: error: ld returned 1 exit status
File "caml_startup", line 1:
Error: Error during linking
Command exited with code 2.
, так что я не уверен, что попробовать следующий.
Получил его, чтобы скомпилировать с помощью 'ocamlbuild -use-ocamlfind -package re2 -package core ls.byte', но столкнулся с проблемами при компиляции в native. –
для храбрых: https://gist.github.com/anonymous/971d9501385e144855d7 первый файл - это вывод из ocamlbuild, второй - скомпилированный файл. –