2016-02-10 3 views
5

के लिए अनिकर्नल बनाने में असमर्थ मैंने मूल HTTP GET कॉल निष्पादित करने के लिए एक सरल मिराजोज़-आधारित यूनिकेलर लिखा है। यह जब मैं एक यूनिक्स द्विआधारी के रूप में चलाते बिना किसी समस्या के काम कर रहा है, वहीं इस समय मैं एक्सईएन (mirage configure --xen) के लिए कॉन्फ़िगर और make आदेश लॉन्च करते हैं, मैं निम्नलिखित त्रुटि मिलती है:मिराजोस - XEN

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 

मैं बस के साथ काम करना शुरू किया मिराजोस और ओकैमल तो यह एक बेवकूफ सवाल हो सकता है लेकिन अभी मैं वास्तव में नहीं जानता कि क्या करना है।

उत्तर

5

आपको Cohttp_lwt_unix का उपयोग नहीं करना चाहिए। जैसा कि नाम से पता चलता है, यह यूनिक्स पर चलता है, न कि xen पर। यदि आप एक वेबसर्वर का उदाहरण चाहते हैं जो xen-proof है, तो आप this skeleton या the code used by mirage-seal पर देख सकते हैं।

3

जैसा कि @ डप कहते हैं, यदि आप पोर्टेबल बनना चाहते हैं तो आपको किसी भी "यूनिक्स" पैकेज से बचने की आवश्यकता है। इसके बजाय, कोहेट के लिए मिराज एडाप्टर का उपयोग करें। इसे काम करना चाहिए:

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