如何 switch/select 在进行交叉编译时使用什么代码
how to switch/select what code to use while doing cross compiling
我正在使用 +build
标签来定义要根据体系结构编译的内容。
对于只在 UNIX/BSD 上运行的代码,我使用这个:
// +build freebsd netbsd openbsd dragonfly darwin
// +build amd64
对于 linux 我有:
// +build linux
包含源代码的文件名是这样的:
watchpid.go
watchpid_linux.go
这些文件包含相同的方法签名但方法不同。
func watchPid() {
// kqueue for UNIX, BSD
// for loop cross-platform version (linux)
}
如果我想 test/compile 例如 Mac OS X 上的 linux 版本,有没有简单的 switch/trick 来做它而不是编辑 +build
标签或重命名文件?
使用GOOS=linux go build
查看https://golang.org/cmd/go/#hdr-Environment_variables and http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5
我正在使用 +build
标签来定义要根据体系结构编译的内容。
对于只在 UNIX/BSD 上运行的代码,我使用这个:
// +build freebsd netbsd openbsd dragonfly darwin
// +build amd64
对于 linux 我有:
// +build linux
包含源代码的文件名是这样的:
watchpid.go
watchpid_linux.go
这些文件包含相同的方法签名但方法不同。
func watchPid() {
// kqueue for UNIX, BSD
// for loop cross-platform version (linux)
}
如果我想 test/compile 例如 Mac OS X 上的 linux 版本,有没有简单的 switch/trick 来做它而不是编辑 +build
标签或重命名文件?
使用GOOS=linux go build
查看https://golang.org/cmd/go/#hdr-Environment_variables and http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5