构建go对于纯go依赖的纯go项目来说工作得很好。但是,当使用C依赖项构建项目时,它在Windows上会失败:
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看起来像这样:
...
- script: 'make package-windows'
...这是我的Makefile:
build-windows:
go build -a -o bin/xyz.exe ./xyz/main.go我还尝试了设置GOOS和GOARCH,但都无济于事:
build-windows:
GOOS=windows GOARCH=amd64 go build -a -o bin/xyz.exe ./xyz/main.go那么我该如何构建它呢?
发布于 2020-10-05 06:58:34
这与Go没有太多关系--看起来你在这方面做的一切都是正确的。问题是你正在使用的库需要sys/socket.h,这在Windows上是不存在的(参见Using sys/socket.h functions on windows)。
您的选择与另一个答案中提到的类似:
Winsock尝试使用Cygwin.
sys/socket.h.
https://stackoverflow.com/questions/64200429
复制相似问题