我正在构建使用CGo的代码,此代码必须被编译为共享或静态库(静态是高度优选的)。 (code for reference)转到代码编译链接器错误。我可以手动链接吗?
它在Linux和Mac上都可以正常工作,但是在Windows上它在链接器阶段失败,或者说所有4种模式(c-shared,shared,c-archive,archive)都不可用或者调用go tool link -shared
手动抱怨缺少窗口的具体说明。
我的理解是,我需要建立可用lib.a是编译的一切,我会使用到的目标文件(*的.o),然后把它通过ar
才能产生有效的静态库。
现在的问题是我是否可以完全跳过Go的链接器,并基于准备好的.o
文件手动创建.a
?
如果甚至有可能,我该如何去做?
你在哪里得到这些“准备好的'.o'文件”以构建成静态库?有关Windows问题的详细信息,请参阅https://github.com/golang/go/issues/11058。 – JimB
@JimB当调用cgo时,.o文件来自Go本身。你可以用'-x'参数运行一个示例代码,这样它就会向你展示它正在做的所有事情,然后通过调用'go tool [tool] [arguments]''并调用' gcc [arguments]'因为这是用CGo代码去做的。 – AlexKey
@JimB另外,如果你看看你链接的问题仍然存在,意味着它没有解决。但是,当我在自己的答案中编写代码时,我不得不构建Go代码的最新主分支,以便能够成功编译所有内容。 – AlexKey