H2o: Windowsでlibh2oをコンパイルできますか

作成日 2017年05月18日  ·  5コメント  ·  ソース: h2o/h2o

最も参考になるコメント

CYGWINを介してlibh2oをビルドしました。 必要な変更はわずかです。

$  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>

全てのコメント5件

ネイティブのWIN32にクリーンに移植するにはかなりの作業が必要です。 私はそれを感じるためにそれに数日の午後を過ごしました。 そうは言っても、Cygwinに組み込まれていると思います...

私はmingwを使用してlibh2oに準拠しようとしています。 しかし、gnulib-toolはcmakeをサポートできません。インポートに失敗しました...ウィンドウの下のプロジェクトに。

CYGWINを介してlibh2oをビルドしました。 必要な変更はわずかです。

$  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>

今日、完全なサーバーを構築してみました-それはうまくいきました。 これで、Windowsでh2oを使用できます。 これはプルリクエストで提出する必要があると思います。

このスレッドは現在3年以上経過しています。 それ以来、h2oは変更されており、現在のソースはMingW上でそのままビルドまたは動作しなくなりました(これまでに行った場合)。 UrbitをWindowsに移植するパッチを作成しました。その範囲は、Urbitに必要なものに限定されています。libuvバリアントのみがビルドされ、fastcgiまたはmemcachedのサポートはありません。 行数による最大の変化は、libuv uv_buf_tとh2o h2o_iovec_tが2つのフィールドを逆の順序で宣言することによって引き起こされます。MingWでは、libuvはWinSockの順序を使用して余分なコピーを回避しますが、h2oはPOSIXを使用します。注文。 MingWで構築されている場合、パッチはh2o_iovec_tのフィールドを交換します。

/ cc @kazuho

このページは役に立ちましたか?
0 / 5 - 0 評価