fix(v0.5.1): force CGO_ENABLED=0 in cross-build targets
A native Linux build of build-linux defaulted to CGO_ENABLED=1 and produced a glibc-linked binary, which would not run in minimal containers (Alpine, distroless, scratch). The Windows cross-compile was already pure-Go because Go disables cgo when no host C toolchain is available; making CGO_ENABLED=0 explicit keeps both targets statically linked regardless of build host. Verified on WSL: file reports "statically linked", ldd reports "not a dynamic executable".
This commit is contained in:
@@ -10,15 +10,19 @@ default:
|
||||
build:
|
||||
go build -o ctask.exe .
|
||||
|
||||
# Cross-compile a Linux amd64 binary into dist/
|
||||
# Cross-compile a Linux amd64 binary into dist/. CGO_ENABLED=0 forces a
|
||||
# pure-Go static link so the binary works in minimal containers (Alpine,
|
||||
# distroless, scratch). Without this, native Linux builds default to
|
||||
# CGO_ENABLED=1 and link against the host glibc.
|
||||
build-linux:
|
||||
mkdir -p dist
|
||||
GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./
|
||||
|
||||
# Cross-compile a Windows amd64 binary into dist/
|
||||
# Cross-compile a Windows amd64 binary into dist/. CGO_ENABLED=0 keeps
|
||||
# the artifact pure Go, matching the spec's "no cgo" rule.
|
||||
build-windows:
|
||||
mkdir -p dist
|
||||
GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./
|
||||
|
||||
# Build both Windows and Linux artifacts into dist/
|
||||
build-all: build-windows build-linux
|
||||
|
||||
Reference in New Issue
Block a user