go-zero
go-zero copied to clipboard
Does go-zero support FreeBSD os?
cmd: GOOS=freebsd GOARCH=amd64 go build main.go
output:
# github.com/zeromicro/go-zero/core/logx
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/[email protected]/core/logx/rotatelogger.go:198:5: undefined: fs.CloseOnExec
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/[email protected]/core/logx/rotatelogger.go:261:6: undefined: fs.CloseOnExec
# github.com/zeromicro/go-zero/core/metric
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/[email protected]/core/metric/counter.go:42:7: undefined: proc.AddShutdownListener
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/[email protected]/core/metric/gauge.go:45:7: undefined: proc.AddShutdownListener
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/[email protected]/core/metric/histogram.go:48:7: undefined: proc.AddShutdownListener
go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE=""
GOENV=""
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH=""
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
GOROOT=""
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR=""
GOVCS=""
GOVERSION="go1.18"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/l6/tgk0vqdj5712w_hhg1snvf240000gp/T/go-build4100046907=/tmp/go-build -gno-record-gcc-switches -fno-common"
If go compiles, then go-zero compiles.
$ freebsd-version
13.2-RELEASE
$ go run main.go
# github.com/zeromicro/go-zero/core/logx
../../pkg/mod/github.com/zeromicro/[email protected]/core/logx/rotatelogger.go:305:5: undefined: fs.CloseOnExec
../../pkg/mod/github.com/zeromicro/[email protected]/core/logx/rotatelogger.go:368:6: undefined: fs.CloseOnExec
可以确定,go-zero在FreeBSD下是无法编译的。
在Windows平台下交叉编译,也是报同样的错误。
If go compiles, then go-zero compiles.
经过这几个月的测试,go-zero在FreeBSD下是完全可以正常使用的,只要把core下的几个文件的第一行的pragma修改一下,添加FreeBSD平台即可。比如core/fs/files.go文件,改成如下即可
//go:build linux || darwin || freebsd