首页 文章

在Bitbucket管道中交叉编译Golang

提问于
浏览
0

我正在尝试配置Bitbucket管道以自动将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

build命令之前的行在该文件夹中显示两个Go文件 . 我怀疑Windows文件系统试图与Linux文件系统交谈时可能出现问题?我花了几个小时搜索和试验,但似乎没有解决问题 .

1 回答

  • 1

    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.

相关问题