Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rust-cross/rust-musl-cross
Docker images for compiling static Rust binaries using musl-cross
https://github.com/rust-cross/rust-musl-cross
docker-image musl-cross musl-libc rust
Last synced: 3 months ago
JSON representation
Docker images for compiling static Rust binaries using musl-cross
- Host: GitHub
- URL: https://github.com/rust-cross/rust-musl-cross
- Owner: rust-cross
- License: mit
- Created: 2017-10-11T12:30:13.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-08-01T12:34:38.000Z (5 months ago)
- Last Synced: 2024-08-02T00:22:58.449Z (5 months ago)
- Topics: docker-image, musl-cross, musl-libc, rust
- Language: Shell
- Size: 480 KB
- Stars: 608
- Watchers: 14
- Forks: 66
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-rust-cn - messense/rust-musl-cross - cross [<img src="https://api.travis-ci.org/messense/rust-musl-cross.svg?branch=master">](https://travis-ci.org/messense/rust-musl-cross) (Development tools / Deployment)
- awesome-rust - rust-cross/rust-musl-cross - cross [![Build](https://github.com/rust-cross/rust-musl-cross/workflows/Build/badge.svg)](https://github.com/rust-cross/rust-musl-cross/actions?query=workflow%3ABuild) (Development tools / Deployment)
- awesome-rust - rust-cross/rust-musl-cross - Docker images for compiling static Rust binaries using musl-cross [![Build](https://github.com/rust-cross/rust-musl-cross/workflows/Build/badge.svg)](https://github.com/rust-cross/rust-musl-cross/actions?query=workflow%3ABuild) (Development tools / Deployment)
- fucking-awesome-rust - rust-cross/rust-musl-cross - Docker images for compiling static Rust binaries using musl-cross [![Build](https://github.com/rust-cross/rust-musl-cross/workflows/Build/badge.svg)](https://github.com/rust-cross/rust-musl-cross/actions?query=workflow%3ABuild) (Development tools / Deployment)
- fucking-awesome-rust - rust-cross/rust-musl-cross - Docker images for compiling static Rust binaries using musl-cross [![Build](https://github.com/rust-cross/rust-musl-cross/workflows/Build/badge.svg)](https://github.com/rust-cross/rust-musl-cross/actions?query=workflow%3ABuild) (Development tools / Deployment)
README
# rust-musl-cross
[![Docker Image](https://img.shields.io/docker/pulls/messense/rust-musl-cross.svg?maxAge=2592000)](https://hub.docker.com/r/messense/rust-musl-cross/)
[![Build](https://github.com/rust-cross/rust-musl-cross/workflows/Build/badge.svg)](https://github.com/rust-cross/rust-musl-cross/actions?query=workflow%3ABuild)
[![Bors enabled](https://bors.tech/images/badge_small.svg)](https://app.bors.tech/repositories/58197)> 🚀 Help me to become a full-time open-source developer by [sponsoring me on GitHub](https://github.com/sponsors/messense)
Docker images for compiling static Rust binaries using [musl-cross-make][],
inspired by [rust-musl-builder](https://github.com/emk/rust-musl-builder)## Prebuilt images
Currently we have the following [prebuilt Docker images on Docker Hub](https://hub.docker.com/r/messense/rust-musl-cross/),
supports x86_64(amd64) and aarch64(arm64) architectures.| Rust toolchain | Cross Compile Target | Docker Image Tag |
| -------------- | -------------------------------- | ------------------ |
| stable | aarch64-unknown-linux-musl | aarch64-musl |
| stable | arm-unknown-linux-musleabi | arm-musleabi |
| stable | arm-unknown-linux-musleabihf | arm-musleabihf |
| stable | armv5te-unknown-linux-musleabi | armv5te-musleabi |
| stable | armv7-unknown-linux-musleabi | armv7-musleabi |
| stable | armv7-unknown-linux-musleabihf | armv7-musleabihf |
| stable | i586-unknown-linux-musl | i586-musl |
| stable | i686-unknown-linux-musl | i686-musl |
| nightly | mips-unknown-linux-musl | mips-musl |
| nightly | mipsel-unknown-linux-musl | mipsel-musl |
| nightly | mips64-unknown-linux-muslabi64 | mips64-muslabi64 |
| nightly | mips64el-unknown-linux-muslabi64 | mips64el-muslabi64 |
| nightly | powerpc64le-unknown-linux-musl | powerpc64le-musl |
| stable | x86\_64-unknown-linux-musl | x86\_64-musl |To use `armv7-unknown-linux-musleabihf` target for example, first pull the image:
```bash
docker pull messense/rust-musl-cross:armv7-musleabihf
# Also available on ghcr.io
# docker pull ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf
```Then you can do:
```bash
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src messense/rust-musl-cross:armv7-musleabihf'
rust-musl-builder cargo build --release
```This command assumes that `$(pwd)` is readable and writable. It will output binaries in `armv7-unknown-linux-musleabihf`.
At the moment, it doesn't attempt to cache libraries between builds, so this is best reserved for making final release builds.## How it works
`rust-musl-cross` uses [musl-libc][], [musl-gcc][] with the help of [musl-cross-make][] to make it easy to compile, and the new
[rustup][] `target` support.## Use beta/nightly Rust
Currently we install stable Rust by default, if you want to switch to beta/nightly Rust, you can do it by extending
from our Docker image, for example to use beta Rust for target `x86_64-unknown-linux-musl`:```dockerfile
FROM messense/rust-musl-cross:x86_64-musl
RUN rustup update beta && \
rustup target add --toolchain beta x86_64-unknown-linux-musl
```## Strip binaries
You can use the `musl-strip` command inside the image to strip binaries, for example:
```bash
docker run --rm -it -v "$(pwd)":/home/rust/src messense/rust-musl-cross:armv7-musleabihf musl-strip /home/rust/src/target/release/example
```[musl-libc]: http://www.musl-libc.org/
[musl-gcc]: http://www.musl-libc.org/how.html
[musl-cross-make]: https://github.com/richfelker/musl-cross-make
[rustup]: https://www.rustup.rs/## License
Licensed under [The MIT License](./LICENSE)