Datsik
Datsik

Reputation: 14824

How do I cross compile my Go program from Mac OS X to Ubuntu 64-bit

As the title says I'm wondering how to cross-compile my program so that I can run it on Ubuntu 64-bit

I've went into the /usr/local/go/src folder and ran

GOOS=linux GOARCH=amd64 ./make.bash --no-clean

everything compiled fine

then went into my project directory and ran go build -v -a and then took the compiled binary and moved it to my linux server, but when running it I get this error:

root@PanicCSGO40:~/test# ./test
-bash: ./test: cannot execute binary file: Exec format error
root@PanicCSGO40:~/test# sudo ./test
./test: 1: ./test: Syntax error: "(" unexpected
root@PanicCSGO40:~/test#

Not sure what I am doing wrong any information would be great thanks.

I've also tried doing it with GOARCH=386 but still get the same errors. Thanks!

This link does not solve my question because the chosen answer is a link to a blog post which relies heavily on doing all cross-compilation on using the blog writers bash scripts to do it, I just simply wanted to know what the correct way to do it was and now I do.

Upvotes: 25

Views: 24619

Answers (1)

SnoProblem
SnoProblem

Reputation: 1939

The build command needs to identify the target environment:

$ GOOS=linux GOARCH=amd64 go build -v /path/to/target/package

Upvotes: 89

Related Questions