是否可以成功编译mod_go.c并在Windows环境中为GOLANG生成Apache模块(mod_go.so)?
不幸的是我找不到任何详细的说明,比如C ++编译器的类型,apache版本等以及我必须遵循的步骤?
此致
答案 0 :(得分:2)
可能这是不可能的,但我让你去检查。
Go plugins仅在Linux上受支持。因此,如果您绝对需要在Go中编写Apache模块(需要Go编译器生成的共享对象的dynamic loading,这是Go中编码的plugin),您最好切换到Linux 。顺便说一下,Windows的链接器模型与Linux有很大的不同,所以它不会轻易改变,我不会对Go在Windows上安装插件几年感到惊讶。
Linux dlopen(3)(实际上是POSIX feature)及其共享库(ELF共享对象,包含position-independent代码)与Windows LoadLibrary
非常不同和DLL s。
阅读Levine的Linkers and Loaders书和(针对Linux)Drepper的论文How To Write Shared Libraries
因此,如果您非常需要在今年(例如2018年底之前)编写Go中的插件供Apache使用,我强烈建议您将Apache服务器计算机切换到Linux。
顺便说一句,看起来你mod_go
没有使用Go插件(但是与一些外部进程通信,我让你去研究它的源代码,我只是看了一眼)也许使用{{3因为FastCGI支持,所以可以更简单。可能是Windows' Apache可以配置为与某些FastCGI应用程序通信(请注意,FastCGI 不 Go has FastCGI)。
(我不知道Windows,从未使用过它,但是读了一些关于它的奇怪的东西 - 而且恕我直言,不如Unix链接模型)