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:

Pre-compiled

Download the tool chain pre-compiled for Linux x86_64.

 SHA256 880886efba0f592a3d3c5ffb9fa63e692cb6bd643e13c5c468d0da027c22716e

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 /usr/local/genode/tool/<version>, which is the location expected by Genode's build system.

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-