From: Andrey Bokhanko Date: Fri, 12 Mar 2021 16:21:18 +0000 (+0800) Subject: cmd/cgo: check whether C compiler exists X-Git-Tag: go1.17beta1~1080 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4313c28861;p=gostls13.git cmd/cgo: check whether C compiler exists Currently we print a cryptic message if a C compiler doesn't exist. This patch adds more graceful handling. Fixes #44271 Change-Id: I44f16ef6eb2853fee22fa1d996e41ec6c9ee82f1 Reviewed-on: https://go-review.googlesource.com/c/go/+/301249 Run-TryBot: Ian Lance Taylor TryBot-Result: Go Bot Reviewed-by: Ian Lance Taylor Reviewed-by: David Chase --- diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index 5767c54307..77ac5e0d3a 100644 --- a/src/cmd/cgo/main.go +++ b/src/cmd/cgo/main.go @@ -20,6 +20,7 @@ import ( "io" "io/ioutil" "os" + "os/exec" "path/filepath" "reflect" "runtime" @@ -302,6 +303,14 @@ func main() { p := newPackage(args[:i]) + // We need a C compiler to be available. Check this. + gccName := p.gccBaseCmd()[0] + _, err := exec.LookPath(gccName) + if err != nil { + fatalf("C compiler %q not found: %v", gccName, err) + os.Exit(2) + } + // Record CGO_LDFLAGS from the environment for external linking. if ldflags := os.Getenv("CGO_LDFLAGS"); ldflags != "" { args, err := splitQuoted(ldflags)