zeromicro / go-zero

A cloud-native Go microservices framework with cli tool for productivity.
https://go-zero.dev
MIT License
28.84k stars 3.91k forks source link

Does go-zero support FreeBSD os? #2195

Open Kitten-Liu opened 2 years ago

Kitten-Liu commented 2 years ago

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/go-zero@v1.3.4/core/logx/rotatelogger.go:198:5: undefined: fs.CloseOnExec
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/go-zero@v1.3.4/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/go-zero@v1.3.4/core/metric/counter.go:42:7: undefined: proc.AddShutdownListener
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/go-zero@v1.3.4/core/metric/gauge.go:45:7: undefined: proc.AddShutdownListener
../../../.gvm/pkgsets/go1.18/global/pkg/mod/github.com/zeromicro/go-zero@v1.3.4/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"
kevwan commented 2 years ago

If go compiles, then go-zero compiles.

ankexun commented 1 year ago
$ freebsd-version
13.2-RELEASE

$ go run main.go
# github.com/zeromicro/go-zero/core/logx
../../pkg/mod/github.com/zeromicro/go-zero@v1.5.0/core/logx/rotatelogger.go:305:5: undefined: fs.CloseOnExec
../../pkg/mod/github.com/zeromicro/go-zero@v1.5.0/core/logx/rotatelogger.go:368:6: undefined: fs.CloseOnExec

可以确定,go-zero在FreeBSD下是无法编译的。

在Windows平台下交叉编译,也是报同样的错误。

If go compiles, then go-zero compiles.

ankexun commented 10 months ago

经过这几个月的测试,go-zero在FreeBSD下是完全可以正常使用的,只要把core下的几个文件的第一行的pragma修改一下,添加FreeBSD平台即可。比如core/fs/files.go文件,改成如下即可 //go:build linux || darwin || freebsd