File: //opt/golang/1.22.0/src/cmd/go/testdata/script/build_static.txt
[short] skip 'links and runs binaries'
# This test requires external linking. Assume that if cgo is supported
# then external linking works.
[!cgo] skip 'requires a C linker'
# Only run on Unix systems.
[GOOS:windows] skip
[GOOS:plan9] skip
# Ordinary build should work.
go build
exec ./hello
stdout Hello
# Building with -linkmode=external should not say anything about
# runtime/cgo (issue #31544).
go build -ldflags=-linkmode=external
! stderr runtime/cgo
exec ./hello
stdout Hello
# Some targets don't support -static
[GOOS:darwin] skip 'no static linking on Darwin'
[GOOS:solaris] skip 'no static linking on Solaris'
# Building with -linkmode=external -extldflags=-static should work.
go build -ldflags='-linkmode=external -extldflags=-static'
! stderr runtime/cgo
exec ./hello
stdout Hello
-- go.mod --
module hello
go 1.20
-- hello.go --
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}