问题
Suppose I'm a primarily Linux user, but I'm developing an application in Go that I want to be cross platform. I've searched around, but I can't seem to find information to absolve the following:
- If I
go install
a binary on my amd64 Ubuntu system, will it also work on anyone else's 64-bit Ubuntu/Debian system? - How can I use
go install
to build an x86_64 binary that will also run out-of-the-box on 32-bit Debianlikes? - If I must use Windows to make a binary which will run on Windows, how can I also ensure that even if my Windows system is 64-bit the executable will be built for x86_64?
My questions in effect boil down to, "how static/portable is go's linker/compiler?"
回答1:
- Yes it will; this is true of basically all binaries compiled for 64-bit Linux, not just those written in Go (except for shared libraries, which Go doesn't rely on)
- You can set the
GOOS
andGOARCH
environment variables before building:GOOS=windows GOARCH=386 go build
(orgo install
or whatever), etc - By default a binary will be built for the system you're running, but this isn't necessary - see 2
来源:https://stackoverflow.com/questions/33872612/are-golang-binaries-portable