diff --git a/bind/testdata/cgopkg/cgopkg.go b/bind/testdata/cgopkg/cgopkg.go
index 567bba4..efef3da 100644
--- a/bind/testdata/cgopkg/cgopkg.go
+++ b/bind/testdata/cgopkg/cgopkg.go
@@ -1,5 +1,7 @@
 package cgopkg
 
+import "C"
+
 import (
 	_ "golang.org/x/mobile/gl"
 )
diff --git a/cmd/gobind/gobind_test.go b/cmd/gobind/gobind_test.go
index c31fce2..4a433dd 100644
--- a/cmd/gobind/gobind_test.go
+++ b/cmd/gobind/gobind_test.go
@@ -94,7 +94,8 @@
 	cmd.Dir = exported.Config.Dir
 	cmd.Env = exported.Config.Env
 	if goos != "" {
-		cmd.Env = append(cmd.Env, "GOOS="+goos)
+		// Add CGO_ENABLED=1 explicitly since Cgo is disabled when GOOS is different from host OS.
+		cmd.Env = append(cmd.Env, "GOOS="+goos, "CGO_ENABLED=1")
 	}
 	if out, err := cmd.CombinedOutput(); err != nil {
 		var cmd string
diff --git a/cmd/gobind/main.go b/cmd/gobind/main.go
index 530032f..8ccb995 100644
--- a/cmd/gobind/main.go
+++ b/cmd/gobind/main.go
@@ -52,6 +52,9 @@
 		langs = []string{"go", "java", "objc"}
 	}
 
+	// We need to give appropriate environment variables like CC or CXX so that the returned packages no longer have errors.
+	// However, getting such environment variables is difficult or impossible so far.
+	// Gomobile can obtain such environment variables in env.go, but this logic assumes some condiitons gobind doesn't assume.
 	cfg := &packages.Config{
 		Mode: packages.NeedName | packages.NeedFiles |
 			packages.NeedImports | packages.NeedDeps |
@@ -143,10 +146,8 @@
 	typePkgs := make([]*types.Package, len(allPkg))
 	astPkgs := make([][]*ast.File, len(allPkg))
 	for i, pkg := range allPkg {
-		if len(pkg.Errors) > 0 {
-			errorf("%v", pkg.Errors)
-			return
-		}
+		// Ignore pkg.Errors. pkg.Errors can exist when Cgo is used, but this should not affect the result.
+		// See the discussion at golang/go#36547.
 		typePkgs[i] = pkg.Types
 		astPkgs[i] = pkg.Syntax
 	}
diff --git a/cmd/gomobile/bind.go b/cmd/gomobile/bind.go
index 5a74d93..741f72c 100644
--- a/cmd/gomobile/bind.go
+++ b/cmd/gomobile/bind.go
@@ -214,7 +214,8 @@
 
 func packagesConfig(targetOS string) *packages.Config {
 	config := &packages.Config{}
-	config.Env = append(os.Environ(), "GOARCH=arm", "GOOS="+targetOS)
+	// Add CGO_ENABLED=1 explicitly since Cgo is disabled when GOOS is different from host OS.
+	config.Env = append(os.Environ(), "GOARCH=arm", "GOOS="+targetOS, "CGO_ENABLED=1")
 	tags := buildTags
 	if targetOS == "darwin" {
 		tags = append(tags, "ios")
diff --git a/go.mod b/go.mod
index 807e703..2a2408c 100644
--- a/go.mod
+++ b/go.mod
@@ -6,5 +6,5 @@
 	golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56
 	golang.org/x/image v0.0.0-20190802002840-cff245a6509b
 	golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd
-	golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e
+	golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69
 )
diff --git a/go.sum b/go.sum
index c387242..1143895 100644
--- a/go.sum
+++ b/go.sum
@@ -10,6 +10,7 @@
 golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
 golang.org/x/mod v0.1.0 h1:sfUMP1Gu8qASkorDVjnMuvgJzwFbTZSeXFiGBYAVdl4=
 golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd h1:ePuNC7PZ6O5BzgPn9bZayERXBdfZjUYoXEf5BTfDfh8=
 golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -23,6 +24,8 @@
 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e h1:aZzprAO9/8oim3qStq3wc1Xuxx4QmAGriC4VU4ojemQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69 h1:yBHHx+XZqXJBm6Exke3N7V9gnlsyXxoCPEb1yVenjfk=
+golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
