Genode tool chain

The Genode OS framework depends on the GNU C++ compiler and tool chain. As most GNU compilers shipped with standard Linux distributions include distro-specific patches and configurations, these tools do not meet Genode's special requirements (e.g., thread-local storage configuration). Therefore, there exists a special tool chain adapted to the specific requirements of Genode.

Recommended development platform

We use recent Ubuntu LTS releases on our development hosts. Hence, Genode should always build without trouble on these platforms.

Unified tool chain

Starting with Genode version 11.11, there is a unified tool chain for all base platforms and supported CPU architectures (x86_32, x86_64, ARM, AARCH64, and RISC-V). For Genode development, we highly recommend the use of the official Genode tool chain. It can be obtained in two ways: as pre-compiled binaries or manually compiled:


Our pre-compiled tool chain is runnable on Linux x86_32 and x86_64. The archives for both versions will be extracted to /usr/local/genode/tool/<version>. To extract the archive, use the following command:

 sudo tar xPf genode-toolchain-<version>-<arch>.tar.xz

The use of the P option ensures that the tool chain will be installed at the correct absolute path where the build system expects it to reside by default. Please note, Genode OS Framework releases require a Genode tool chain with an equal or next smaller version number. Download the pre-compiled tool chain...

Compile from source

For those of you who prefer compiling the tool chain from source, we provide a tool for downloading, building, and installing the Genode tool chain. You find the tool in Genode's source tree at tool/tool_chain. For usage instructions, just start the tool without arguments.

In both cases, the tool chain is installed to /usr/local/genode/tool/<version>. This install location is expected by the build system by default. The tools are prefixed with genode-x86-, genode-arm-, genode-riscv-, or genode-aarch64- respectively so that it is safe to add the /usr/local/genode/tool/<version>/bin/ path to our PATH environment variable (optional).

Should you desire to use a different tool chain, create a file called tools.conf in the etc/ subdirectory of your build directory where you can define the tool-chain prefix to be used:

 CROSS_DEV_PREFIX = /path/to/your/custom/tool_chain/your-x86-