H2o: Kann ich libh2o unter Windows kompilieren?

Erstellt am 18. Mai 2017  ·  5Kommentare  ·  Quelle: h2o/h2o

Hilfreichster Kommentar

Ich habe gerade libh2o über CYGWIN gebaut. Es ist nur eine geringfügige Änderung erforderlich:

$  cmake . -G"Unix Makefiles" -DWITH_BUNDLED_SSL=0 -DWITH_MRUBY=0 -DLIBUV_LIBRARIES=~/git/libuv/.libs/libuv.a -DLIBUV_INCLUDE_DIR=~/git/libuv/include -DLIBUV_VERSION=1.11.0
$ make examples-simple
$ git diff
diff --git a/deps/libyrmcds/yrmcds_portability.h b/deps/libyrmcds/yrmcds_portability.h
index c9fd4d91..b1f151d4 100644
--- a/deps/libyrmcds/yrmcds_portability.h
+++ b/deps/libyrmcds/yrmcds_portability.h
@@ -27,7 +27,7 @@
 #  define htole64(x) OSSwapHostToLittleInt64(x)
 #  define be64toh(x) OSSwapBigToHostInt64(x)
 #  define le64toh(x) OSSwapLittleToHostInt64(x)
-#elif defined(__linux__)
+#elif defined(__linux__) || defined (__CYGWIN__)
 #  include <endian.h>
 #elif defined(sun) // Solaris
 #  include <sys/byteorder.h>

Alle 5 Kommentare

Es ist eine Menge Arbeit erforderlich, um es sauber auf natives WIN32 zu portieren. Ich habe ein paar Nachmittage damit verbracht, um ein Gefühl dafür zu bekommen. Das heißt, ich glaube, es baut in Cygwin ...

Ich versuche, libh2o mit mingw zu erfüllen. aber gnulib-tool kann cmake nicht unterstützen.Ich konnte nicht importieren... zum Projekt unter Windows.

Ich habe gerade libh2o über CYGWIN gebaut. Es ist nur eine geringfügige Änderung erforderlich:

$  cmake . -G"Unix Makefiles" -DWITH_BUNDLED_SSL=0 -DWITH_MRUBY=0 -DLIBUV_LIBRARIES=~/git/libuv/.libs/libuv.a -DLIBUV_INCLUDE_DIR=~/git/libuv/include -DLIBUV_VERSION=1.11.0
$ make examples-simple
$ git diff
diff --git a/deps/libyrmcds/yrmcds_portability.h b/deps/libyrmcds/yrmcds_portability.h
index c9fd4d91..b1f151d4 100644
--- a/deps/libyrmcds/yrmcds_portability.h
+++ b/deps/libyrmcds/yrmcds_portability.h
@@ -27,7 +27,7 @@
 #  define htole64(x) OSSwapHostToLittleInt64(x)
 #  define be64toh(x) OSSwapBigToHostInt64(x)
 #  define le64toh(x) OSSwapLittleToHostInt64(x)
-#elif defined(__linux__)
+#elif defined(__linux__) || defined (__CYGWIN__)
 #  include <endian.h>
 #elif defined(sun) // Solaris
 #  include <sys/byteorder.h>

Ich habe heute versucht, den kompletten Server aufzubauen - es hat funktioniert. Jetzt kann ich h2o unter Windows verwenden. Ich denke, dies sollte in einem Pull-Request eingereicht werden.

Dieser Thread ist jetzt über 3 Jahre alt. h2o hat sich seitdem geändert und die aktuellen Quellen bauen oder funktionieren nicht mehr so ​​wie sie sind auf MingW (falls sie es jemals getan haben). Ich habe während der Portierung von Urbit auf Windows einen Patch für h2o erstellt , der für das h2o-Projekt interessant sein könnte. Sein Umfang ist auf das beschränkt, was ich für Urbit brauchte: nur die libuv-Variante wird gebaut, und keine Fastcgi- oder Memcached-Unterstützung. Die größte Änderung in Bezug uv_buf_t Zeilenanzahl wird dadurch verursacht, dass libuv h2o_iovec_t die beiden Felder in umgekehrter Reihenfolge deklarieren: Auf MingW verwendet libuv die WinSock-Reihenfolge, um zusätzliches Kopieren zu vermeiden, während h2o das POSIX verwendet bestellen. Der Patch tauscht die Felder in h2o_iovec_t wenn er auf MingW basiert.

/cc @kazuho

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

utrenkner picture utrenkner  ·  3Kommentare

taosx picture taosx  ·  6Kommentare

Ys88 picture Ys88  ·  5Kommentare

paulpref picture paulpref  ·  5Kommentare

proyb6 picture proyb6  ·  5Kommentare