New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: 'go build' encountered invalid C headers under MacOS #30072

Open
hbprotoss opened this Issue Feb 4, 2019 · 2 comments

Comments

Projects
None yet
2 participants
@hbprotoss
Copy link

hbprotoss commented Feb 4, 2019

What version of Go are you using (go version)?

$ go version
go version go1.11.5 darwin/amd64

Does this issue reproduce with the latest release?

yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/hbprotoss/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/hbprotoss/.go:/Users/hbprotoss/Documents/dev/Projects/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.11.5/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.11.5/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/s_/2knwlbxn7dvc7zqdkk8x850r0000gn/T/go-build921630012=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

Actually, I'm using Golang to debug go program, after I hit the debug button, it didn't compile.

The command used to compile is

go build -gcflags "all=-N -l" main.go

What did you expect to see?

No error

What did you see instead?

It reports

runtime/cgo

In file included from gcc_libinit.c:8:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/pthread.h:232:66: error: unknown type name 'size_t'
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/pthread.h:249:43: error: unknown type name 'size_t'
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/pthread.h:256:66: error: unknown type name 'size_t'
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/pthread.h:524:1: error: unknown type name 'size_t'
gcc_libinit.c:97:18: error: variable has incomplete type 'struct timespec'
gcc_libinit.c:97:9: note: forward declaration of 'struct timespec'
gcc_libinit.c:105:14: error: use of undeclared identifier 'EAGAIN'
gcc_libinit.c:110:3: error: implicit declaration of function 'nanosleep' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gcc_libinit.c:112:9: error: use of undeclared identifier 'EAGAIN'

@bcmills

This comment has been minimized.

Copy link
Member

bcmills commented Feb 4, 2019

These sorts of symptoms on macOS often indicate a broken Xcode install or some other, incompatible gcc toolchain earlier in $PATH.

In this particular case, it appears that you have an invalid pthread.h: size_t is defined in stddef.h, which pthread.h should #include as needed. Similarly, struct timespec should be provided by time.h (#included here); the fact that it is missing suggests that something is very wrong in your C include path.

@bcmills

This comment has been minimized.

Copy link
Member

bcmills commented Feb 4, 2019

Are you able to build C programs in the same environment?

You may be able to run which clang and/or find / -name time.h to locate the bad headers; as a last resort, you could try removing and reinstalling Xcode.

@bcmills bcmills changed the title go build failed with multiple unknown type under MacOS cmd/go: 'go build' encountered invalid C headers under MacOS Feb 4, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment