Ocaml MirageOS-无法为XEN构建unikernel

Ocaml MirageOS-无法为XEN构建unikernel,ocaml,xen,unikernel,mirage,Ocaml,Xen,Unikernel,Mirage,我已经编写了一个简单的基于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 -ta

我已经编写了一个简单的基于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
ocamlbuild-使用ocamlfind-pkgs-lwt.syntax,cohttp.lwt,cohttp.lwt-core,mirage-console.xen,mirage-http,mirage-types.lwt-tags”语法(camlp4o),annot,bin_-annot,strict_-sequence,principal”-标记行“:-syntax(camlp4o)”-cflag-lflags-g-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.native.o
文件“\u none\u”,第1行:
错误:没有为以下模块提供实现:
Unix引用自/home/mirage/.opam/system/lib/lwt/lwt Unix.cmxa(lwt_引擎),
/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\u unix.cmxa(ipaddr\u unix),
/home/mirage/.opam/system/lib/xenstore_transport/xenstore_transport_lwt_unix.cmxa(Xs_transport_lwt_unix_客户端),
/home/mirage/.opam/system/lib/conductor/conductor lwt unix.cmxa(conductor\u lwt\u 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)
命令已退出,代码为2。
在00:00:03中生成7个目标(0已缓存)后编译失败。
make:**[main.native.o]错误10

我刚开始使用MirageOS和OCaml,所以这可能是一个愚蠢的问题,但现在我真的不知道该怎么办。

您不应该使用
cohtp\u lwt\u unix
。顾名思义,它运行在unix上,而不是xen上。如果您想要一个防xen的Web服务器示例,您可以查看或查看。

正如@Drup所说,如果您想要可移植,您需要避免使用任何“unix”软件包。相反,对cohttp使用幻影适配器。这一条应该有效: