我正在构建大量使用CGo的Go代码,并且此代码必须才能编译为共享库或静态库(静态是首选)。 (code for reference)
在Linux和Mac上一切正常,但在Windows上它在链接器阶段失败要么说所有4种模式(c-shared,shared,c-archive,archive)都不可用,要么调用{{1} }手动抱怨缺少Windows特定说明。
我的理解是,我需要构建可用的 lib.a 就是将我将使用的所有内容编译成目标文件(* .o),然后通过go tool link -shared
生成它来生成可用的静态库。
现在问题是我是否可以完全跳过Go的链接器,并根据准备好的ar
文件手动创建.o
?
如果可能的话,我该怎么做呢?
答案 0 :(得分:0)
看起来Windows上的gcc无法自动发现必要的共享库。问题是由海湾合作委员会引起的,而不是由Go。
引起的虽然编译Go我必须使用自编译的主提示,因为当前版本(1.6.2)不支持windows / amd64上的共享/静态库。
在默认位置(C:\ Windows \ SysWOW64)中手动为每个共享库(ntdll,winmm等)提供gcc修复了问题。