DockCross: Crosscompiling con Docker

De vez en cuando tenemos la necesidad de compilar programas para otras plataformas pero no queremos meter en nuestro sistema todo el «toolchain» para poder compilar en esa plataforma. Para evitar esto, podemos hacer uso de dockcross.

Dockcross usa docker para meter en un contenedor imágenes ya preparadas para poder compilar (normalmente lenguaje c/c++) programas para otros procesadores diferentes al nuestro.

En el articulo anterior https://elbinario.net/2016/10/07/docker-instalacion-en-debian-jessie/ ya vimos como instalar docker así que ahora vamos un paso más adelante.

Instalación

Dockcross usa un script de ayuda que se genera desde la propia imagen de la siguiente forma:

$ docker run --rm CROSS_COMPILER_IMAGE_NAME > ./dockcross
$ chmod +x ./dockcross
$ mv ./dockcross ~/bin/

Por ejemplo para compilar un «hello world» para arquitecturas armv7 como la raspberry pi2:

$ cd ~/src/dockcross
$ docker run --rm dockcross/linux-armv7 > ./dockcross-linux-armv7
$ chmod +x ./dockcross-linux-armv7
$ ./dockcross-linux-armv7 bash -c '$CC test/C/hello.c -o hello_arm'

Tenemos imagenes para hacer crosscompiling a android, arm (v5, v6, v7), powerpc, windows, etc.

Comandos

Para actualizar las imágenes que tengamos descargadas:

$ dockcross update-image

Para actualizar los scripts generados:

$ dockcross update-script

Para actualizar imágenes y scripts

$ dockcross update

Refencias:

https://github.com/dockcross/dockcross

Compartir

1 Comentario

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax