Lighthouse currently lacks support for cross-compilation targeting the `riscv64` architecture. This PR introduces initial support for cross-compiling Lighthouse to `riscv64`. The following changes were made: - **Makefile**: Updated to support `cross` with `riscv64` as a target. - **Cross.toml**: Added configuration specific to `riscv64`. - **Documentation**: List 'build-riscv64' in `book/src/installation_cross_compiling.md`.
1.5 KiB
Cross-compiling
Lighthouse supports cross-compiling, allowing users to run a binary on one
platform (e.g., aarch64) that was compiled on another platform (e.g.,
x86_64).
Instructions
Cross-compiling requires Docker,
rustembedded/cross and for the
current user to be in the docker group.
The binaries will be created in the target/ directory of the Lighthouse
project.
Targets
The Makefile in the project contains two targets for cross-compiling:
build-x86_64: builds an optimized version for x86_64 processors (suitable for most users).build-aarch64: builds an optimized version for 64-bit ARM processors (suitable for Raspberry Pi 4/5).build-riscv64: builds an optimized version for 64-bit RISC-V processors.
Example
cd lighthouse
make build-aarch64
The lighthouse binary will be compiled inside a Docker container and placed
in lighthouse/target/aarch64-unknown-linux-gnu/release.
Feature Flags
When using the makefile the set of features used for building can be controlled with
the environment variable CROSS_FEATURES. See Feature
Flags for available features.
Compilation Profiles
When using the makefile the build profile can be controlled with the environment variable
CROSS_PROFILE. See Compilation Profiles for
available profiles.