Skip to content

jowr/cross-compilers

 
 

Repository files navigation

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.

About

Dockerfiles for cross compiling environments

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 73.2%
  • CMake 19.5%
  • Makefile 7.3%