Distcc/Cross-Compiling/es

Esta guía le muestras cómo configurar distcc para realizar compilación cruzada entre diferentes arquitecturas de procesador.

Introducción
es una herramienta que permite compartir la carga de compilación de software entre varios computadores en una red. Mientras todos los computadores usen las mismas herramientas de sistema (toolchain) construidas para la misma arquitectura de procesador no hace falta ninguna configuración especial para.

Esta guía ofrece instrucciones sobre cómo configurar distcc para compilar en distintas arquitecturas.

Hacer emerge de la utilidades necesarias
En primer lugar necesitará hacer emerge de en cada uno de los equipos involucrados en el proceso de compilación. La herramienta hace más fácil la construcción de herramientas de sistema para arquitecturas de forma cruzada. Su uso es sencillo: construirá un conjunto de herramientas de sistema cruzado para la arquitectura sparc. Esto incluye binutils, gcc, glibc y linux-headers.

Necesitará hacer emerge de la cadena de herramientas para compilación cruzada adecuada en todos los equipos que vayan a participar. Si necesita más ayuda, lance.

Si desea realizar un ajuste fino de la cadena de herramientas de compilación cruzada, a continuación se muestra un guión que producirá una línea de comandos con las versiones exactas de los paquetes de desarrollo cruzado que deben ser construidos en los equipos que participan en la compilación (El guión se debe lanzar en el equipo destino).

A continuación necesitará hacer emerge de en todas las máquinas involucradas en el proceso. Esto incluye la máquina en la que lanzará emerge y las máquinas con los compiladores cruzados. Por favor, lea la Documentación sobre Distcc de Gentoo para obtener más información acerca de cómo configurar y usar.

Subarquitecturas Intel x86
If you are cross-compiling between different subarchitectures for Intel (e.g. i586 and i686), you must still build a full cross-toolchain for the desired CHOST, or else the compilation will fail. This is because i586 and i686 are actually different CHOSTs, despite the fact that they are both considered "x86." Please keep this in mind when you build your cross-toolchains. For example, if the target box is i586, this means that you must build i586 cross-toolchains on your i686 helper boxes.

SPARC
Using might fail with one of the following errors:

Si esto sucede, intente utilizar la siguiente orden:

Configurar distcc para realizar compilaciones cruzadas correctas
In the default distcc setup, cross-compiling will not work properly. The problem is that many builds just call instead of the full compiler name (e.g. ). When this compile gets distributed to a distcc helper box, the native compiler gets called instead of your shiny new cross-compiler.

Fortunately, there is a workaround for this little problem. All it takes is a wrapper script and a few symlinks on the box that will be running. We'll use a Sparc box as an example. Wherever you see  below, you will want to insert your own CHOST value (  for an AMD64 box, for example). When you first emerge distcc, the directory looks like this:

Esto es lo que debe hacer:

Next, we'll create the new script on this box. Fire up your favorite editor and create a file with the following text in it, then save it as. Remember to change the CHOST value (in this case, ) to the actual CHOST of the box that will be running the emerge.

A continuación haremos que el guión sea ejecutable y crearemos los enlaces simbólicos adecuados:

Cuando haya terminado, tendrá el siguiente aspecto:

A continuación queremos asegurarnos de que estos envoltorios están disponibles después de actualizar el paquete distcc ya que se sobrescribirán los enlaces simbólicos. Podemos hacer esto a través del fichero que tiene el siguiente aspecto:

A continuación, crear este fichero:

Asignar los permisos apropiados:

¡Enhorabuena!. Probablemente tenga ahora una configuración de compilación cruzada con distcc en funcionamiento.

Como funciona esto
When is called, it checks to see what it was called as (e.g. ,  , etc.) When distcc then distributes the compile to a helper box, it passes along the name it was called as. The distcc daemon on the other helper box then looks for a binary with that same name. If it sees just, it will look for , which is likely to be the native compiler on the helper box, if it is not the same architecture as the box running. When the full name of the compiler is sent (e.g. ), there is no confusion.

Resolución de problemas
This section covers a number of common problems when using for cross-compiling.

Remote host distccd COMPILE ERRORS
When receiving the message  within a remote host's  file, see the above notes concerning specifying the correct architecture name (ie. ).

Another solution is to uninstall and re-install compiler tools, using the  option, or ensuring  no longer exists, and then completely reinstall the cross compiler.

It might also be wise to edit the remote host's, and ensure the contents of the CFLAGS variable are similar on all computers or hosts performing compiler operations.

Failed to exec $DESTINO-uknown-linux-gnu-gcc: No such file or directory
Los guiones envoltorio pueden fallar en su ejecución incluso con los permisos correctos:

Para arreglar esto, asegúrese de haber creado el guión envoltorio con el nombre completo de la arquitectura destino: