Eu li Como criar uma cadeia de ferramentas GCC 4.7 para compilação cruzada? e construímos com sucesso um programa de teste simples que funciona no meu RPi.
Para fazer isso, tive que executar arm-unknown-linux-gnueabi-gcc hello.c -o hello
no meu desktop x86 e scp
no executável no meu RPi. Isso é lento e um aborrecimento. Prefiro controlar a compilação do meu RPi.
Eu li sobre distcc
, que pode ser usado para distribuir a compilação de uma máquina para outra.
Como instalo isso? Eu tenho os desktops Debian / Ubuntu e Arch Linux e os dois sistemas operacionais instalados nos cartões SD.
debian
archlinux
cross-compilation
Alex Chamberlain
fonte
fonte
export DISTCC_VERBOSE=1
Obrigado por isso! É o que eu estou procurando a minha debbug distcc toolchainRespostas:
Essas instruções pressupõem que você tenha um compilador cruzado ativo no escravo. Leia Como criar uma cadeia de ferramentas GCC 4.7 para compilação cruzada? se você não tiver. Também é útil ter
make
instalado no mestre.Instalação
Primeiro, devemos instalar
distcc
. Usaremos os pacotes pré-criados fornecidos pelos sistemas de gerenciamento de pacotes dos sistemas operacionais, mas você pode instalar gratuitamente a partir da fonte, se quiser!Debian
Arco
Configuração
Escravo - Debian / Ubuntu
Precisamos ajustar as configurações
/etc/default/distcc
. No seu editor favorito, abra-o como root; Corrisudo vim /etc/default/distcc
.Você precisa mudar
STARTDISTCC
,ALLOWEDNETS
eLISTENER
. Supondo que você tenha seu mestre e escravo na mesma sub-rede e essa sub-rede192.168.0.0/24
, eles devem ser configurados comoAlém disso, você deve adicionar o caminho ao seu compilador. Eu fiz isso adicionando a seguinte linha
Execute o daemon - normalmente seria iniciado na inicialização - executando
Mestre - Arco
Abra
~/.distcc/hosts
no seu editor de texto favorito e adicione o endereço IP dos escravos. Meuhosts
arquivo consistia em uma única linha, que era lida192.168.0.22
.Usar
Se tudo correr bem, você poderá usar o distcc de maneira bastante simples. Por exemplo, para compilar
hello.c
ahello.o
, corridaExemplo: Olá, mundo!
Eu configurei um exemplo simples no meu diretório pessoal, que consistia em 2 arquivos.
A corrida
make hello
será compilada localmente; você deve fazer isso como um teste rápido primeiro. Continue, eu espero.A execução
make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
executará uma compilação distribuída.Depuração
Demorei um pouco para que isso funcionasse corretamente, e a melhor ferramenta de depuração que encontrei foi uma variável de ambiente simples. Se vocês
o
distcc
cliente produzirá muitas informações úteis.Este é um post longo, portanto qualquer feedback será recebido com gratidão. Espero ter me lembrado de todos os passos!
fonte