Closed
Description
I'm trying to cross-compile a trivial program on my Mac:
gavriep-mac: race $ cat race.go
package main
func main() {
}
gavriep-mac: race $ GOOS=linux GOARCH=amd64 go build -x
WORK=/var/folders/38/ky2kf2yx73qc52gryv3dzbx00000gq/T/go-build285258632
mkdir -p $WORK/github.com/gavrie/race/_obj/
mkdir -p $WORK/github.com/gavrie/race/_obj/exe/
cd /Users/gavriep/source/go/src/github.com/gavrie/race
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/compile -o $WORK/github.com/gavrie/race.a -trimpath $WORK -p main -complete -buildid 0f9212d067be36f95ebf6ec130acb47e2826d503 -D _/Users/gavriep/source/go/src/github.com/gavrie/race -I $WORK -pack ./race.go
cd .
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link -o $WORK/github.com/gavrie/race/_obj/exe/a.out -L $WORK -extld=clang -buildmode=exe -buildid=0f9212d067be36f95ebf6ec130acb47e2826d503 $WORK/github.com/gavrie/race.a
mv $WORK/github.com/gavrie/race/_obj/exe/a.out race
The above works fine and creates a valid Linux executable. However, doing the same thing with the -race
flag fails:
gavriep-mac: race $ GOOS=linux GOARCH=amd64 go build -race -x
WORK=/var/folders/38/ky2kf2yx73qc52gryv3dzbx00000gq/T/go-build476204867
mkdir -p $WORK/github.com/gavrie/race/_obj/
mkdir -p $WORK/github.com/gavrie/race/_obj/exe/
cd /Users/gavriep/source/go/src/github.com/gavrie/race
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/compile -o $WORK/github.com/gavrie/race.a -trimpath $WORK -race -p main -complete -installsuffix race -buildid b801b3275b2b7f7079aca168cd9514526a6e411a -D _/Users/gavriep/source/go/src/github.com/gavrie/race -I $WORK -pack ./race.go
cd .
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link -o $WORK/github.com/gavrie/race/_obj/exe/a.out -L $WORK -installsuffix race -extld=clang -buildmode=exe -buildid=b801b3275b2b7f7079aca168cd9514526a6e411a -race $WORK/github.com/gavrie/race.a
# github.com/gavrie/race
runtime/race(.text): __libc_malloc: not defined
runtime/race(.text): getuid: not defined
runtime/race(.text): pthread_self: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): sleep: not defined
runtime/race(.text): usleep: not defined
runtime/race(.text): abort: not defined
runtime/race(.text): isatty: not defined
runtime/race(.text): __libc_free: not defined
runtime/race(.text): getrlimit: not defined
runtime/race(.text): pipe: not defined
runtime/race(.text): __libc_stack_end: not defined
runtime/race(.text): getrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): exit: not defined
runtime/race(.text.unlikely): __errno_location: not defined
runtime/race(.text): undefined: __libc_malloc
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link: too many errors
I have not set GOROOT
, and the Go version is 1.5beta3
built with Homebrew.