Go Cross-Compilation Mac to Linux

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

Set GOOS and GOARCH environment variables to appropriate values, during the build.

To build on Mac for Linux:

export GOOS=linux
export GOARCH=amd64

Cgo

https://go.dev/blog/cgo

If Cgo is needed:

brew install FiloSottile/musl-cross/musl-cross
export CC=x86_64-linux-musl-gcc; export CXX=x86_64-linux-musl-g++;  export GOOS=linux; export GOARCH=amd64; export CGO_ENABLED=1; go build [...]

Even if the program seems to be compiling successfully, and the executable is produced, when trying to run it from a Linux VM I get bash: ./yunikorn-scheduler: No such file or directory, which tells me that something is wrong with the file.