if you build with CGO_ENABLED=0 then you'll have fully static go binaries on osx (but TLS won't work)
Eg:
cd /tmp
git clone git@github.com:apg/wipes.git wipes.git
cd wipes.git/
go get github.com/gorilla/websocket
go get github.com/gorilla/websocket
go build
ldd wipes.git
# > libc.so.6 among others
export CGO_ENABLED=0
go build # makes no difference, produces identical binary
Afaik, in this case it's 'net/http' that pulls in a dependency on cgo
(again, unless we rebuild the whole go toolchain with cgo_enabled=0).Not that this is terrible as such, but it's a gotcha if you want to run the resulting binary in a chroot, or on a host with a different version of libc...
it hasn't. i meant 'if you build go with CGO_ENABLED=0' but was unclear.
> Afaik, in this case it's 'net/http' that pulls in a
> dependency on cgo (again, unless we rebuild the whole
> go toolchain with cgo_enabled=0).
You can also build with '-tags netgo'[1], and use go for name resolution, but still use cgo for when else you may need it. go install -a -tags netgo std
go build -tags netgo
ldd wipes.git
not a dynamic executable
Thanks for the tip :)