(Atualizado em março de 2014 para go 1.2.1)
Acabei de atualizar para o Mavericks e meu ambiente de compilação cruzada parou de funcionar corretamente.
Com o Mavericks, a Apple removeu o gcc das ferramentas de desenvolvedor de linha de comando (agora é clang apenas com link simbólico para gcc).
A fim de obter o código fonte 1.2.1 para compilar, tive que instalar o gcc na minha máquina Mavericks, pois estava falhando com o clang. Eu vi alguma discussão na lista de e-mails go sobre isso, mas da forma como está, não consegue construir.
Aqui está o que eu fiz para fazê-lo funcionar
Primeiro instalei o gcc via homebrew:
# installing gcc on mavericks using brew
brew tap homebrew/dupes
brew install apple-gcc42
Então eu vinculei simbolicamente o apple-gcc42 recém-instalado em minha pasta / usr / bin
cd /usr/bin
sudo mv gcc gcc_mavs
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 gcc
Agora, executando ‘gcc’ deve mostrar a você:
i686-apple-darwin11-gcc-4.2.1: no input files
O gcc agora está bom e você pode compilar a partir dos fontes.
Para me divertir, vou repassar o resto da minha configuração de compilação cruzada.
Configurando o ambiente de compilação cruzada
Primeiro baixe a fonte go mais recente (no momento, março de 2014, é a versão 1.2.1)
curl -O https://go.googlecode.com/files/go1.2.1.src.tar.gz
Descompacte
tar -zxvf go1.2.1.src.tar.gz
Em seguida, vá para o diretório go e compile-o
cd go/src
./all.bash
Assim que go terminar de compilar, você pode configurar a compilação cruzada construindo diferentes conjuntos de ferramentas para as plataformas que deseja oferecer suporte.
Eu pessoalmente gosto que façamos isso.
Primeiro instale o goxc:
go get github.com/laher/goxc
Em seguida, execute a compilação do conjunto de ferramentas:
goxc -t
Quando isso for concluído, você terá todos os conjuntos de ferramentas da plataforma construídos e disponíveis para uso em seu sistema.
Para usá-los, você pode usar goxc ou prefiro apenas executar comandos de compilação diretamente ou por meio de scripts.
Você está pronto para fazer compilações multiplataforma 🙂
Por exemplo, para construir um projeto para linux 64 bits:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o binary_name source_file.go