5

簡単な MirageOS ベースの Unikernel を作成して、基本的な HTTP GET 呼び出しを実行しました。Unix バイナリとして実行すると問題なく動作しますが、XEN ( mirage configure --xen) 用に構成してコマンドを起動するとmake、次のエラーが表示されます。

ocamlbuild -use-ocamlfind -pkgs lwt.syntax,cohttp.lwt,cohttp.lwt-core,mirage-console.xen,mirage-http,mirage-types.lwt -tags "syntax(camlp4o),annot,bin_annot,strict_sequence,principal" -tag-line "<static*.*>: -syntax(camlp4o)" -cflag -g -lflags -g,-linkpkg,-dontlink,unix main.native.o
+ ocamlfind ocamlopt -g -linkpkg -dontlink unix -output-obj -package mirage-types.lwt -package mirage-http -package mirage-console.xen -package cohttp.lwt-core -package cohttp.lwt -package lwt.syntax -syntax camlp4o unikernel.cmx main.cmx -o main.native.o
File "_none_", line 1:
Error: No implementations provided for the following modules:
         Unix referenced from /home/mirage/.opam/system/lib/lwt/lwt-unix.cmxa(Lwt_engine),
           /home/mirage/.opam/system/lib/lwt/lwt-unix.cmxa(Lwt_unix),
           /home/mirage/.opam/system/lib/lwt/lwt-unix.cmxa(Lwt_io),
           /home/mirage/.opam/system/lib/lwt/lwt-unix.cmxa(Lwt_log),
           /home/mirage/.opam/system/lib/ipaddr/ipaddr_unix.cmxa(Ipaddr_unix),
           /home/mirage/.opam/system/lib/xenstore_transport/xenstore_transport_lwt_unix.cmxa(Xs_transport_lwt_unix_client),
           /home/mirage/.opam/system/lib/conduit/conduit-lwt-unix.cmxa(Conduit_lwt_unix),
           /home/mirage/.opam/system/lib/cohttp/cohttp_lwt_unix.cmxa(Cohttp_lwt_unix_debug),
           /home/mirage/.opam/system/lib/cohttp/cohttp_lwt_unix.cmxa(Cohttp_lwt_unix)
Command exited with code 2.
Compilation unsuccessful after building 7 targets (0 cached) in 00:00:03.
make: *** [main.native.o] Error 10

MirageOS と OCaml を使い始めたばかりなので、ばかげた質問かもしれませんが、今はどうすればよいかわかりません。

4

2 に答える 2

3

@Drup が言うように、移植可能にしたい場合は、「unix」パッケージを避ける必要があります。代わりに、cohttp 用の Mirage アダプタを使用してください。これはうまくいくはずです:

https://github.com/mirage/mirage-http

于 2016-02-10T15:01:29.047 に答える