Factory for cross compilers inside of Docker container
This repository provides Docker containers that allows to build very specific GCC-LINUX-LIBC toolchain in reproducible manner. You don't see anything here, because it is organised into branches. Each branch is separate triplet of compiler, OS and standard library, usually with very specific version of each component.
Main purpose from developing this repository is to allow to recreate toolchains for systems that did not provide public SDKs. By the way it should also work decently in providing latest compilers for any architecture one would like.
Most of users should prefer downloading precompiled toolchain. They are all available in Releases page. After downloading package of your choice, refer to Installing SDK section.
- Select desired target from Table of contents
- Checkout to target's branch:
git checkout <branch-name>
- Make sure Docker is running and you have access to Docker daemon
- Build container with
make build
- Wait couple of minutes for toolchain to build
- Run container:
make run
- If you want to play with toolchain in isolated container, type
make shell
. You will be dropped into normal user interactive shell - If you prefer to run toolchain on your own system, type:
make sdk
outdir
directory should appear, with tarball inside
If you decided to export SDK outside container, its installation is as simple as
unpacking the package to /
:
tar -zxvf mips-linux-uclibc.tar.gz -C /
By default SDK is installed in /opt/${TARGET}
directory, where ${TARGET}
is
full target name, e.g. mips-linux-uclibc
for big endian MIPS with uClibc as C
library.
If you prefer to have SDK installed elsewhere, you have to specify this before
attempting to build the image, by editing SDK_ROOT
variable in Dockefile
. If
you try to unpack SDK into different path, it simply won't work, as this path is
hardcoded into compiler!
Platform | CC | OS | LIBC | branch |
---|---|---|---|---|
MIPS | gcc 4.6.4 | Linux 4.1.38 | uClibc 1.0.12 | mips-gcc4.6.4-linux4.1.38-uclibc1.0.12 |
MIPSEL | gcc 4.6.4 | Linux 3.4.113 | uClibc 1.0.26 | mipsel-gcc4.6.4-linux3.4.113-uclibc1.0.26 |
MIPS | gcc 10.2.0 | Linux 5.9.13 | uClibc 1.0.36 | mips-gcc10.2.0-linux5.9.13-uclibc1.0.36 |
MIPSEL | gcc 10.2.0 | Linux 5.9.13 | uClibc 1.0.36 | mipsel-gcc10.2.0-linux5.9.13-uclibc1.0.36 |
x86_64 | gcc 10.2.0 | Linux 5.9.13 | uClibc 1.0.36 | x86_64-gcc10.2.0-linux5.9.13-uclibc1.0.36 |
Platform | CC | OS | LIBC | branch |
---|---|---|---|---|
MIPS | gcc 3.3.2 | Linux 4.1.38 | uClibc 1.0.12 | mips-gcc3.3.2-linux4.1.38-uclibc1.0.12 |