首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows环境下用C依赖编写go程序

在Windows环境下用C依赖编写go程序
EN

Stack Overflow用户
提问于 2020-10-05 06:20:33
回答 1查看 272关注 0票数 0

构建go对于纯go依赖的纯go项目来说工作得很好。但是,当使用C依赖项构建项目时,它在Windows上会失败:

代码语言:javascript
复制
go build -a -o bin/xyz.exe ./xyz/main.go
go: downloading gopkg.in/confluentinc/confluent-kafka-go.v1 v1.4.2
go: downloading github.com/confluentinc/confluent-kafka-go v1.4.2
# gopkg.in/confluentinc/confluent-kafka-go.v1/kafka
In file included from C:\Users\VssAdministrator\go\pkg\mod\gopkg.in\confluentinc\confluent-kafka-go.v1@v1.4.2\kafka\00version.go:24:
./librdkafka/rdkafka.h:83:10: fatal error: sys/socket.h: No such file or directory
 #include <sys/socket.h> /* for sockaddr, .. */
          ^~~~~~~~~~~~~~
compilation terminated.
mingw32-make: *** [Makefile:10: build-windows] Error 2
##[error]Cmd.exe exited with code '2'.
Finishing: CmdLine

从上面的输出可以看出,我使用了一个Makefile,我的azure-pipelines.yml看起来像这样:

代码语言:javascript
复制
...
- script: 'make package-windows'
...

这是我的Makefile:

代码语言:javascript
复制
build-windows:
    go build -a -o bin/xyz.exe ./xyz/main.go

我还尝试了设置GOOS和GOARCH,但都无济于事:

代码语言:javascript
复制
build-windows:
    GOOS=windows GOARCH=amd64 go build -a -o bin/xyz.exe ./xyz/main.go

那么我该如何构建它呢?

EN

回答 1

Stack Overflow用户

发布于 2020-10-05 06:58:34

这与Go没有太多关系--看起来你在这方面做的一切都是正确的。问题是你正在使用的库需要sys/socket.h,这在Windows上是不存在的(参见Using sys/socket.h functions on windows)。

您的选择与另一个答案中提到的类似:

Winsock尝试使用Cygwin.

  • Modify来构建库,以使用Winsock代替sys/socket.h.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64200429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档