# cross-rs/cross

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/cross-rs-cross).**

8,235 stars · 456 forks · Rust · Apache-2.0

## Links

- GitHub: https://github.com/cross-rs/cross
- awesome-repositories: https://awesome-repositories.com/repository/cross-rs-cross.md

## Topics

`aarch64` `arm` `bsd` `cargo` `cross-compilation` `cross-testing` `linux` `mips` `powerpc` `rust` `s390x` `sparc` `windows` `x86`

## Description

Cross is a container-based build environment and cross-compilation tool for Rust. It functions as a multi-architecture binary builder and testing framework, allowing users to compile crates into binaries for different operating systems and CPU architectures without installing local toolchains on the host system.

The project distinguishes itself by using Docker images to provide consistent toolchains and system dependencies for foreign target architectures. It integrates the Zig toolchain within container images to facilitate compilation across various architectures and library versions, and it supports executing test suites against non-native architectures through containerized emulation.

The system provides capabilities for image management, including the use of custom Dockerfiles and registry images. It manages the build lifecycle through pre-build script execution, environment variable mapping, and the configuration of container runtimes. Additionally, it includes observability features such as system call tracing for binaries running on foreign architectures.

## Tags

### Development Tools & Productivity

- [Cross-Architecture Binary Generation](https://awesome-repositories.com/f/development-tools-productivity/cross-architecture-binary-compilation/multi-architecture-binary-bundling/cross-architecture-binary-generation.md) — Generates executables for multiple CPU architectures and operating systems without requiring local toolchain installation.
- [Toolchain Provisioning](https://awesome-repositories.com/f/development-tools-productivity/notebook-environments/environment-provisioning/container-based-provisioning/toolchain-provisioning.md) — Maps target architecture triples to specific container images containing the required cross-compilers and build dependencies.
- [Build Environment Customization](https://awesome-repositories.com/f/development-tools-productivity/build-environment-configurators/build-environment-shells/build-phase-automation/custom-build-hooks/build-environment-customization.md) — Cross allows defining toolchains and system dependencies for specific target architectures using custom images or pre-build scripts. ([source](https://github.com/cross-rs/cross/blob/main/docs/custom_images.md))
- [Build Scripting](https://awesome-repositories.com/f/development-tools-productivity/build-scripting.md) — Cross supports running shell commands inside the build container before compilation to install required system dependencies. ([source](https://github.com/cross-rs/cross/blob/main/docs/config_file.md))
- [Target-Specific Build Settings](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-targets/target-specific-build-settings.md) — Cross supports setting unique build parameters, runners, and image requirements for individual target triples. ([source](https://github.com/cross-rs/cross/blob/main/docs/config_file.md))
- [Environment Variable Mapping](https://awesome-repositories.com/f/development-tools-productivity/environment-variable-mapping.md) — Cross controls which host environment variables are forwarded into the build environment globally or on a per-target basis. ([source](https://github.com/cross-rs/cross/blob/main/docs/environment_variables.md))

### Programming Languages & Runtimes

- [Binary Cross-Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/cross-platform-library-compilations/binary-cross-compilation.md) — Cross supports compiling Rust code into executables for different target architectures and operating systems using isolated containers for consistent environments. ([source](https://github.com/cross-rs/cross/blob/main/.gitattributes))
- [Rust Cross-Compilation Tooling](https://awesome-repositories.com/f/programming-languages-runtimes/rust-cross-compilation-tooling.md) — Building Rust binaries for different operating systems and CPU architectures without installing local toolchains on the host system.
- [Cross-Compilation Managers](https://awesome-repositories.com/f/programming-languages-runtimes/rust-based-compilers/cross-compilation-managers.md) — Cross enables cross-compilation to various architectures and library versions using the Zig toolchain within a single container image. ([source](https://github.com/cross-rs/cross/blob/main/docs/config_file.md))
- [Target Compiler Mappings](https://awesome-repositories.com/f/programming-languages-runtimes/target-compiler-mappings.md) — Associates specific Rust target triples with custom runtime arguments and image requirements to standardize build environments.

### DevOps & Infrastructure

- [Emulated Binary Execution](https://awesome-repositories.com/f/devops-infrastructure/container-images/container-execution/emulated-binary-execution.md) — Cross executes compiled binaries for foreign architectures through emulation within containers to verify runtime behavior. ([source](https://github.com/cross-rs/cross#readme))
- [Cross-Compilation Docker Images](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/container-runtimes/runtime-configuration-interfaces/docker-socket-orchestrators/docker-target-configurators/docker-container-deployments/docker-image-building/cross-compilation-docker-images.md) — Uses pre-configured Docker images containing the necessary toolchains and dependencies for reproducible cross-compilation.
- [Custom Container Images](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/image-management-tools/custom-container-images.md) — Cross allows specifying custom Dockerfiles or registry images to provide tailored toolchains and system libraries for compilation. ([source](https://github.com/cross-rs/cross/blob/main/docs/config_file.md))
- [Containerized Build Environments](https://awesome-repositories.com/f/devops-infrastructure/containerized-build-environments.md) — Using isolated containers to manage complex toolchains and system dependencies for consistent software compilation across different machines.
- [Container Configuration](https://awesome-repositories.com/f/devops-infrastructure/container-configuration.md) — Cross provides settings to adjust runtime arguments, user identifiers, and namespaces to match specific system requirements. ([source](https://github.com/cross-rs/cross/blob/main/docs/environment_variables.md))
- [Container Engine Configurations](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/container-runtimes/runtime-configuration-interfaces/container-engine-configurations.md) — Cross allows users to specify the preferred container runtime to manage and execute build environments. ([source](https://github.com/cross-rs/cross#readme))

### Hardware & IoT

- [Binary Emulators](https://awesome-repositories.com/f/hardware-iot/embedded-robotics/hardware-in-the-loop-simulators/binary-emulators.md) — Uses a software emulator within a container to execute and test binaries compiled for non-native CPU architectures.

### Software Engineering & Architecture

- [Toolchain Isolations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/decoupled-architectures/container-based-isolation/toolchain-isolations.md) — Wraps the compilation process inside a container to isolate target-specific toolchains and system libraries from the host.

### Testing & Quality Assurance

- [Cross-Platform Rust Testers](https://awesome-repositories.com/f/testing-quality-assurance/cross-platform-rust-testers.md) — Provides a tool to emulate target architectures to verify Rust programs behave correctly across different platforms.
- [Cross-Platform Test Execution](https://awesome-repositories.com/f/testing-quality-assurance/testing-infrastructure-management/cross-platform-test-execution.md) — Executes test suites across multiple different operating environments to verify code functionality across platforms. ([source](https://github.com/cross-rs/cross/blob/main/.gitattributes))

### Web Development

- [Build Environment Passthroughs](https://awesome-repositories.com/f/web-development/request-metadata/environment-variable-metadata-forwarding/host-to-guest-variable-forwards/build-environment-passthroughs.md) — Forwards selected host environment variables and user identifiers into the isolated build environment to maintain configuration consistency.
