mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-16 11:22:56 +00:00
## Issue Addressed Closes #2938 ## Proposed Changes * Build and publish images with a `-modern` suffix which enable CPU optimizations for modern hardware. * Add docs for the plethora of available images! * Unify all the Docker workflows in `docker.yml` (including for tagged releases). ## Additional Info The `Dockerfile` is no longer used by our Docker Hub builds, as we use `cross` and a generic approach for ARM and x86. There's a new CI job `docker-build-from-source` which tests the `Dockerfile` without publishing anything.
1.4 KiB
1.4 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 four targets for cross-compiling:
build-x86_64: builds an optimized version for x86_64 processors (suitable for most users).build-x86_64-portable: builds a version for x86_64 processors which avoids using some modern CPU instructions that are incompatible with older CPUs.build-aarch64: builds an optimized version for 64-bit ARM processors (suitable for Raspberry Pi 4).build-aarch64-portable: builds a version for 64-bit ARM processors which avoids using some modern CPU instructions. In practice, very few ARM processors lack the instructions necessary to run the faster non-portable build.
For more information about optimized vs portable builds see Portability.
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.