He leído ¿Cómo construir una cadena de herramientas GCC 4.7 para compilación cruzada? y he creado con éxito un programa de prueba simple que funciona en mi RPi.
Para hacer esto, tuve que ejecutar arm-unknown-linux-gnueabi-gcc hello.c -o hello
en mi escritorio x86 y scp
el ejecutable en mi RPi. Esto es lento y una molestia. Prefiero controlar la compilación desde mi RPi.
He leído sobre distcc
, que se puede utilizar para distribuir la compilación de una máquina a otra.
¿Cómo instalo esto? Tengo los escritorios Debian / Ubuntu y Arch Linux y ambos SO instalados en las tarjetas SD.
debian
archlinux
cross-compilation
Alex Chamberlain
fuente
fuente
export DISTCC_VERBOSE=1
Gracias por esto ! Es lo que estoy buscando para depurar mi cadena de herramientasRespuestas:
Estas instrucciones asumen que tiene un compilador cruzado en funcionamiento en el esclavo. Lea ¿Cómo construir una cadena de herramientas GCC 4.7 para compilación cruzada? si no lo has hecho También es útil tener
make
instalado en el maestro.Instalación
Primero, debemos instalar
distcc
. Utilizaremos los paquetes precompilados suministrados por los sistemas de administración de paquetes de los sistemas operativos, pero puede instalarlos desde el origen si lo desea.Debian
Arco
Configuración
Esclavo - Debian / Ubuntu
Necesitamos ajustar la configuración en
/etc/default/distcc
. En su editor favorito, ábralo como root; Me encontrésudo vim /etc/default/distcc
.Necesitas cambiar
STARTDISTCC
,ALLOWEDNETS
yLISTENER
. Suponiendo que tiene su maestro y esclavo en la misma subred y que esa subred lo está192.168.0.0/24
, deben configurarse enAdemás, debe agregar la ruta a su compilador. Hice esto agregando la siguiente línea
Ejecute el demonio, normalmente se iniciará en el arranque, ejecutando
Maestro - Arco
Abra
~/.distcc/hosts
en su editor de texto favorito y agregue la dirección IP de los esclavos. Mihosts
archivo constaba de una sola línea, que decía192.168.0.22
.Utilizar
Todo va bien, deberías poder usar distcc de manera bastante simple. Por ejemplo, para compilar
hello.c
ahello.o
, ejecuciónEjemplo: Hola Mundo!
Configuré un ejemplo simple en mi directorio de inicio, que consistía en 2 archivos.
Running
make hello
se compilará localmente; debes hacer esto como una prueba rápida primero. Vamos, esperaré.La ejecución
make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
ejecutará una compilación distribuida.Depuración
Me tomó un tiempo hacer que funcionara correctamente, y la mejor herramienta de depuración que encontré fue una variable de entorno simple. Si tu
el
distcc
cliente generará mucha información útil.Esta es una publicación larga, por lo que cualquier comentario será recibido con gratitud. ¡Espero haber recordado todos los pasos!
fuente