Setup
Install the tools you need for the binding(s) and deployment target(s) you'll work with. Most setup is lazy — the build system fetches the ARM toolchain, Renode, and Zig automatically when first needed. You only have to install host-level prerequisites up front.
Always required
| Tool | Minimum version | Notes |
|---|---|---|
| Python 3 | 3.9+ | Required for the ove CLI and Kconfig |
| python3-venv | — | Required to create the .venv environment |
| CMake | 3.20+ | Used by Zephyr and NuttX build systems |
| Git | — | Source checkout and RTOS source downloads |
| A native C/C++ compiler | gcc or clang | Builds the POSIX backend, the C and C++ bindings, and the framework's own tooling |
On Debian/Ubuntu:
sudo apt install python3 python3-venv cmake git build-essential
On Fedora:
sudo dnf install python3 cmake git gcc gcc-c++
Language toolchains
oveRTOS ships first-class bindings for four languages. Install the toolchain for the binding(s) you're authoring in. The build system invokes each lazily — you can work in C++ without installing Rust or Zig.
C / C++
Already covered above (gcc or clang). No further setup.
Rust (≥ 1.85)
Required when authoring in Rust. Install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add thumbv7em-none-eabihf # for ARM embedded targets
The pinned toolchain version is recorded in rust-toolchain.toml; rustup picks it up automatically on first invocation.
Zig (≥ 0.16.0)
Required when authoring in Zig. Two options:
- Let the build system fetch it (recommended for first-time setup):
make ensure-toolchain-zig
The pinned Zig lands under output/toolchains/zig-*/ and the build system uses it transparently.
- Install system-wide — download from ziglang.org/download and add to PATH.
Deployment-target toolchains
For embedded deployment targets (stm32f746g-discovery, qemu-mps2-an500) you need a cross-compiler. The default automatic download fetches arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi — no manual install needed.
To install a system toolchain instead:
# Debian/Ubuntu
sudo apt install gcc-arm-none-eabi
# Or download directly from developer.arm.com
# https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Then point the build system at it via Kconfig (Toolchain menu).
QEMU (for emulated targets)
Required when the selected board is qemu-mps2-an500:
# Debian/Ubuntu
sudo apt install qemu-system-arm
# Fedora
sudo dnf install qemu-system-arm
Not needed for POSIX or hardware-flash workflows.
OpenOCD (for hardware flashing)
Required only to flash the STM32F746G-Discovery (make flash):
sudo apt install openocd
Setting up the ove CLI
The build system runs through the ove CLI tool, which is installed into a local Python virtual environment. Run:
make setup
This will:
- Check that
python3and thevenvmodule are available - Create
.venv/in the project root - Install all Python dependencies from
config/requirements.txt - Install the
oveCLI fromconfig/ove-cli/in editable mode
After setup, the ove command is available at .venv/bin/ove and is used automatically by every make target.
Manual setup (alternative)
python3 -m venv .venv
.venv/bin/pip install -r config/requirements.txt
.venv/bin/pip install -e config/ove-cli
Re-running setup
To force a clean reinstall of the virtual environment:
make setup
The setup target removes the existing stamp file and recreates the environment from scratch.
Verify your environment
After setup, run:
make doctor
It probes every required and optional tool and reports green / yellow / red. See Doctor for what each check means.