gpt4 book ai didi

go - 在 Bitbucket 管道中交叉编译 Golang

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:24 28 4
gpt4 key购买 nike

我正在尝试配置 Bitbucket Pipelines 以自动将 Golang 代码编译到 Linux、OSX 和 Windows。我为此使用了 Go 的交叉编译功能;流水线运行Linux环境,通过设置GOOS和GOARCH的值交叉编译到OSX和Windows。但是,我无法让 Windows 构建正常工作 - 它出错并告诉我它找不到某个包。 Linux 和 OSX 构建均成功。但是,Windows 构建失败,告诉我它找不到/go/src/github.com/sirupsen/logrus/hooks/syslog。之前的两个构建都成功地使用了这个包,并且运行了这两个

ls /go/src/github.com/sirupsen/logrus/hooks/syslog
ls ${GOPATH}/src/github.com/sirupsen/logrus/hooks/syslog

构建命令之前的行显示该文件夹中的两个 Go 文件。我怀疑 Windows 文件系统试图与 Linux 文件系统通信可能有问题?我花了几个小时进行搜索和试验,但似乎无法解决问题。

最佳答案

syslog 是特定于平台的服务,因此 the Logrus syslog hook code有个特别的评论,叫一个build tag , 到告诉 Go 工具不要在 Windows 上构建它(或 Native Client 或 Plan9 ):

// +build !windows,!nacl,!plan9

除非你甚至不想在 Linux 上集成 syslog,否则你可能想将当前总是导入 hooks/syslog 的应用程序代码分成两个版本,一个用于带有 syslog 的平台,一个用于那些没有。如果导入 hooks/syslog 的文件当前是 logconfig.go,您可以创建两个文件 logconfig_syslog.gologconfig_nosyslog .gosyslog 版本具有与上面类似的约束,nosyslog 版本具有相反的 (//+build windows,nacl ,plan9).

Dave Cheney wrote a bit more about build tags and the various flavors of Go conditional compilation.

关于go - 在 Bitbucket 管道中交叉编译 Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com