Windows编译mod_go.so的说明

时间:2017-10-14 13:17:08

标签: go

是否可以成功编译mod_go.c并在Windows环境中为GOLANG生成Apache模块(mod_go.so)?

不幸的是我找不到任何详细的说明,比如C ++编译器的类型,apache版本等以及我必须遵循的步骤?

此致

1 个答案:

答案 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链接模型)