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 for Debian 12.10 or Ubuntu 24.04.
SHA256 245d553c85934589fe3d2d892ce7b3555ad548ece0d000e04c57076d00826850 (Debian) SHA256 6cab8e5f4490399a296a73b01695d5fb055a40f6ac04d61a3f7a7344003eb739 (Ubuntu)
To extract the archive, use the following command:
sudo tar xPf genode-toolchain-<version>-<os>.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-