2017-10-14 16 views
-1

mod_go.cをコンパイルして、Windows環境でGOLANGのApacheモジュール(mod_go.so)を生成できますか?mod_go.soのWindowsコンパイル手順

残念ながら、私はC++コンパイラの種類、Apacheのバージョンなどの詳細な指示を見つけることができません。

よろしく

+0

おそらくありません。それはGoプラグインに関連している可能性がありますが、Linuxのみで動作します –

+0

BTW他の方法を考えましたか?Linux上でApacheを使用する(ほとんどの人がそうしているように)ので、WebサーバーをLinuxに切り替えますか? –

+0

Apache Linuxを使用していたのであれば、私はこの質問をここに置いて議論するつもりはありませんでした。本当の挑戦は、Windowsでそれをやり遂げる方法と、MacOSでそうしない方法を逆の方法で見つけ出すことです。ゴランだけでなく、私が知っている限り、マルチプラットフォームの環境です。 – asimkon

答えて

2

おそらくことはできませんが、私はあなたがチェックしたまま

Go pluginsは、Linuxでのみサポートされています。 ApacheモジュールをGoでコーディングする必要がある場合(Goコンパイラによって生成された共有オブジェクトのdynamic loading、つまりpluginがGoでコード化されている必要がある)、Linuxに切り替える方がよいでしょう。 WindowsのリンカモデルはLinuxと非常に異なりますので、簡単に変更することはできません.GoはWindows上で数年間はプラグインを持たないことに驚くことはありません。

Linuxのdlopen(3)(実際にはPOSIX feature)及び(position-independentコードを含むELF共有オブジェクト、)その共有ライブラリは、Windows LoadLibraryDLL sの非常に異なっています。

読むレヴァインのLinkers and Loaders本とHow To Write Shared Libraries

だから、あなたはひどくはApacheが使用する移動中のプラグイン(2018年の終わりの前など)、今年を記述する必要がある場合Drepperの論文(Linux用)、私は強くお勧めしますApacheサーバーマシンをLinuxに切り替えます。

ところで、それはGo has FastCGIサポートするので、おそらく単純かもしれFastCGIを使用して(私はそのソースコードを研究するために、私はそれに目をやったあなたを残しますが、いくつかの外部プロセスと通信)囲碁のプラグインを使用していない、あなたのmod_goのように見えます。おそらくWindowsのApacheは、FastCGIアプリケーションと話すように設定できます(FastCGIはではなく、CGIです)。

(私はそれを使ったことがない、Windowsのを知っているが、その奇妙な - そして、UNIXリンクモデルへの私見劣るについていくつかのことを読んでいない)