/cross-compilers

Dockerfiles for cross compiling environments

Primary LanguageShellMIT LicenseMIT

cross-compilers

Dockerfiles for cross compiling in a Docker container.

Features

  • different toolchains for cross compiling
  • commands in the container are run as the calling user, so that any created files have the expected ownership (ie. not root)
  • make variables (CC, LD etc) are set to point to the appropriate tools in the container
  • cmake and ninja are precompiled available with a toolchain file for cmake
  • current directory is mounted as the container's workdir, /build
  • works with boot2docker on OSX

Installation

This image is not intended to be run manually. Instead, there is a helper script which comes bundled with the image.

To install the helper script, run the image with no arguments, and redirect the output to a file.

eg.

docker run CROSS_COMPILER_IMAGE_NAME > dockcross
chmod +x dockcross
mv dockcross ~/bin/

Usage

dockcross [command] [args...]

Execute the given command-line inside the container.

If the command matches one of the dockcross built-in commands (see below), that will be executed locally, otherwise the command is executed inside the container.


dockcross -- [command] [args...]

To force a command to run inside the container (in case of a name clash with a built-in command), use -- before the command.

Built-in commands

dockcross update-image

Fetch the latest version of the docker image.


dockcross update-script

Update the installed dockcross script with the one bundled in the image.


dockcross update

Update both the docker image, and the dockcross script.

Configuration

The following command-line options and environment variables are used. In all cases, the command-line option overrides the environment variable.

DOCKCROSS_CONFIG / --config <path-to-config-file>

This file is sourced if it exists.

Default: ~/.dockcross

DOCKCROSS_IMAGE / --image <docker-image-name>

The docker image to run.

Default: sdt4docker/raspberry-pi-cross-compiler

DOCKCROSS_ARGS / --args <docker-run-args>

Extra arguments to pass to the docker run command.

Examples

dockcross make

Build the Makefile in the current directory.


dockcross cmake -Bbuild -H. -GNinja

Run CMake with a build directory "build" for the CMakeLists.txt in the current directory and generate ninja files.

dockcross ninja -Cbuild

Run ninja in the generated build directory.


dockcross bash -c 'find . -name \*.o | sort > objects.txt'

Note that commands are executed verbatim. If you require any shell processing for environment variable expansion or redirection, please use bash -c 'command args...'.


Credits go to sdt sdt/docker-raspberry-pi-cross-compiler on GitHub, who invented the base of the dockcross script.