Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are Golang binaries portable?

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:

  1. If I go install a binary on my amd64 Ubuntu system, will it also work on anyone else's 64-bit Ubuntu/Debian system?
  2. How can I use go install to build an x86_64 binary that will also run out-of-the-box on 32-bit Debianlikes?
  3. 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?"

like image 756
cat Avatar asked Nov 23 '15 13:11

cat


People also ask

What are Golang binaries?

Go Binaries is an open-source server allowing non-Go users to quickly install tools written in Golang, without installing the Go compiler or a package manager — all you need is curl .

Why is Go portable?

This is made possible by the fact that Java code isn't compiled to machine code that is executed directly by the CPU, but rather to bytecode which is executed by the JVM. This bytecode is the same on any JVM, which makes the code portable.

Is Golang multiplatform?

Golang is open-source; therefore, making it efficient, cleaner, and better with time remains an easy task. The cross-platform language can be used with various platforms like UNIX, Linux, Windows, and other operating systems that work on mobile devices as well.


1 Answers

  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)
  2. You can set the GOOS and GOARCH environment variables before building: GOOS=windows GOARCH=386 go build (or go install or whatever), etc
  3. By default a binary will be built for the system you're running, but this isn't necessary - see 2
like image 99
joshlf Avatar answered Sep 25 '22 05:09

joshlf