Cross compiling toolchains in Docker images
Go to file
2016-05-30 22:58:43 +02:00
android-arm android-arm: Add standard toolchain environmental variables. 2016-03-07 11:37:18 -05:00
browser-asmjs browser-asmjs: Update Emscripten to 1.36.1. 2016-03-12 21:25:44 -05:00
darwin-x64 OS X cross compiler SDK package generator from osxcross 2014-11-13 19:35:42 +01:00
imagefiles Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
linux-armv5 Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
linux-armv6 Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
linux-armv7 Updated ARMv7 Dockerfile 2016-05-30 22:50:22 +02:00
linux-ppc64le linux-ppc64le: Specify system processor and fix library finding. 2016-04-18 23:37:20 -04:00
linux-x64 linux-x64: Update to thewtex/cross-compiler-base as base. 2016-03-28 12:45:57 -04:00
linux-x86 Adapted and corrected linux-x86 Xcompile toolset 2016-05-30 22:50:22 +02:00
test test_driver: Add --debug option to avoid deleting the build directory 2016-04-13 19:54:28 -04:00
windows-x64 windows-x64: Add environmental variables. 2016-04-12 21:23:08 -04:00
windows-x86 windows-x86: Add environmental variables. 2016-04-16 21:36:04 -04:00
.gitignore Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
circle.yml Try to avoid docker/circleci btrfs issues. 2016-05-30 22:58:43 +02:00
Dockerfile Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
LICENSE Add license file. 2015-05-06 00:12:06 -04:00
Makefile Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
README.md Adapted the README 2016-05-30 22:50:22 +02:00
README.rst Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00

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.