去代码构建链接器错误。我可以手动链接吗?

时间:2016-04-30 11:33:42

标签: go linker cgo

我正在构建大量使用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

如果可能的话,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

看起来Windows上的gcc无法自动发现必要的共享库。问题是由海湾合作委员会引起的,而不是由Go。

引起的

虽然编译Go我必须使用自编译的主提示,因为当前版本(1.6.2)不支持windows / amd64上的共享/静态库。

在默认位置(C:\ Windows \ SysWOW64)中手动为每个共享库(ntdll,winmm等)提供gcc修复了问题。