2016-02-10 7 views
5

Ich habe einen einfachen MirageOS-basierten Unikernel geschrieben, um einen einfachen HTTP GET-Aufruf auszuführen. Während es ohne Probleme funktioniert, wenn ich es als Unix-binary laufen, konfigurieren Sie den Moment, als ich es für XEN (mirage configure --xen) und starten Sie den make Befehl, ich die folgende Fehlermeldung erhalten:MirageOS - Unikernel für XEN nicht erstellen

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 

Ich habe gerade angefangen die Arbeit mit MirageOS und OCaml, also könnte es eine dumme Frage sein, aber im Moment weiß ich wirklich nicht, was ich tun soll.

Antwort

5

Sie sollten Cohttp_lwt_unix nicht verwenden. Wie der Name schon sagt, läuft es auf Unix, nicht auf Xen. Wenn Sie ein Beispiel für einen Webserver wünschen, der xen-sicher ist, können Sie sich this skeleton oder the code used by mirage-seal ansehen.

3

Wie @Drup sagt, müssen Sie alle "Unix" -Pakete vermeiden, wenn Sie portabel sein wollen. Verwenden Sie stattdessen einen Mirage-Adapter für Cohttp. Dieser sollte funktionieren:

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

Verwandte Themen