说明是否有可能编译mod_go.c成功并产生了Apache模块(mod_go.so)在Windows环境GOLANG?的Windows编译mod_go.so
不幸的是我无法找到诸如类型C++编译器,Apache的版本等,以及哪些步骤我必须遵循任何详细说明?
问候
说明是否有可能编译mod_go.c成功并产生了Apache模块(mod_go.so)在Windows环境GOLANG?的Windows编译mod_go.so
不幸的是我无法找到诸如类型C++编译器,Apache的版本等,以及哪些步骤我必须遵循任何详细说明?
问候
大概那是不可能的,但我离开你检查。
Go plugins只支持Linux。因此,如果您绝对需要在Go中编写Apache模块(这需要Go编译器生成的共享对象dynamic loading,这是Go编码的plugin),那么您最好转换为Linux。顺便说一句,Windows的链接器模型与Linux非常不同,所以它不会轻易改变,我不会为几年来Windows上的插件而感到惊讶。
的Linux dlopen(3)(实际上是一个POSIX feature)及其共享库(ELF共享对象,含有position-independent码)是从Windows LoadLibrary
和DLL的甚不同。
阅读Levine的Linkers and Loaders书(Linux版)Drepper的纸How To Write Shared Libraries
所以,如果你迫切需要进入一个插件被Apache使用的(在2018年底前EG)今年写的,我强烈建议将您的Apache服务器机器切换到Linux。
顺便说一句,它看起来像你的mod_go
不使用Go插件(但也有一些外部进程通信,我离开你研究它的源代码,我只对着镜子照)也许使用FastCGI可能是简单,因为Go has FastCGI支持。可能Windows的Apache可以配置为与某些FastCGI应用程序交谈(请注意,FastCGI是而不是CGI)。
(我不知道的Windows,从来没有使用过,但了解它的怪异 - 和恕我直言逊色于Unix的连接模式中的一些东西)
也许不是。它可能与Go插件有关,它只能在Linux上工作 –
顺便说一句,您是否考虑过使用BTW:在Linux上使用Apache(正如大多数人所做的那样),那么将您的Web服务器切换到Linux? –
如果我使用过Apache Linux,那么我绝对不会在这里提出这个问题并讨论它。真正的挑战是要找到另一种方式,如何在Windows中做到这一点,为什么不在MacOS中。此外,据我所知,golang是一个多平台的环境。 – asimkon