К основному содержанию
скилл CX Codex

rust-cross — скилл для Claude Code: что делает и как установить

Скилл помогает настроить кросс-компиляцию Rust под чужие архитектуры и ОС. Пригодится при сборке статических бинарников через musl или прошивок для микроконтроллеров.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill rust-cross -a claude-code
Открыть на GitHub

Что делает rust-cross

Скилл даёт готовые инструкции по сборке Rust-кода под сторонние платформы. Он подсказывает нужные таргеты rustup, команды линковки и параметры .cargo/config.toml. Под капотом рассматриваются два основных сценария: запуск изолированной среды через утилиту cross либо кросс-компиляция с помощью cargo-zigbuild.

Инструмент охватывает типовые конфигурации под Linux x86-64, ARM64, Windows и macOS, а также сборку под WebAssembly и bare-metal архитектуры вроде Cortex-M или RISC-V. Для работы cross в системе потребуется запущенный Docker. Если вы используете cargo-zigbuild, контейнеры не нужны, но придётся заранее установить компилятор zig.

Какие задачи решает

  • собрать статический бинарник под Linux через musl
  • настроить кросс-компиляцию под ARM64 с помощью cargo-zigbuild
  • сконфигурировать линкер и раннер тестов в .cargo/config.toml
  • подготовить сборку no_std прошивки под Cortex-M или RISC-V

Примеры запросов агенту

  • Как собрать бинарник Rust под aarch64-unknown-linux-gnu через cargo-zigbuild?
  • Помоги настроить .cargo/config.toml для статической сборки под x86_64-unknown-linux-musl.
  • Как настроить проект на Rust под Cortex-M с таргетом thumbv7m-none-eabi?

Как установить rust-cross

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill rust-cross -a claude-code

2Вручную: положить файлы

~/.claude/skills/rust-cross/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/rust-cross/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о rust-cross

Как установить rust-cross в Claude Code?

Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill rust-cross -a claude-code. Также можно поместить файл скилла по пути ~/.claude/skills/rust-cross/SKILL.md.

Зачем нужен скилл rust-cross?

Он подсказывает агенту параметры для кросс-компиляции Rust на другие процессоры и операционные системы. Скилл включает готовые настройки тулчейна, профили Cargo и шаблоны под встроенные системы.

Что требуется для работы со скиллом?

Требования зависят от инструмента. Сборка через cross требует наличия Docker, а для запуска cargo-zigbuild понадобится установленный компилятор zig.

Исходный текст

SKILL.md · MIT
---
name: rust-cross
description: Rust cross-compilation skill. Use when building Rust binaries for a different target architecture or OS, using cross or cargo-zigbuild for hermetic cross-compilation, configuring .cargo/config.toml for cross targets, or targeting embedded and bare-metal systems. Activates on queries about Rust cross-compilation, rustup targets, cross tool, cargo-zigbuild, aarch64-unknown-linux-gnu, thumbv7m-none-eabi, or building for embedded.
---

# Rust Cross-Compilation

## Purpose

Guide agents through Rust cross-compilation: adding rustup targets, using `cross` for hermetic Docker-based cross-builds, `cargo-zigbuild` for zero-setup cross-compilation, `.cargo/config.toml` configuration, and embedded bare-metal targets.

## Triggers

- "How do I cross-compile Rust for ARM/aarch64?"
- "How do I build a Rust binary for a different OS?"
- "How do I use the cross tool for Rust cross-compilation?"
- "How do I build Rust for embedded (no_std) targets?"
- "How do I use cargo-zigbuild?"
- "My cross-compiled Rust binary won't run on the target"

## Workflow

### 1. Add a rustup target

```bash
# List installed targets
rustup target list --installed

# List all available targets
rustup target list

# Add a target
rustup target add aarch64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-musl   # static Linux
rustup target add wasm32-unknown-unknown       # WASM
rustup target add thumbv7m-none-eabi          # Cortex-M

# Build for target
cargo build --target aarch64-unknown-linux-gnu --release
```

### 2. Common target triples

| Target | Use case |
|--------|----------|
| `x86_64-unknown-linux-gnu` | Linux x86-64 (glibc) |
| `x86_64-unknown-linux-musl` | Linux x86-64 (musl, static) |
| `aarch64-unknown-linux-gnu` | ARM64 Linux (Raspberry Pi 4, AWS Graviton) |
| `aarch64-unknown-linux-musl` | ARM64 Linux static |
| `x86_64-pc-windows-gnu` | Windows x86-64 (MinGW) |
| `x86_64-pc-windows-msvc` | Windows x86-64 (MSVC) |
| `x86_64-apple-darwin` | macOS x86-64 |
| `aarch64-apple-darwin` | macOS Apple Silicon |
| `wasm32-unknown-unknown` | WASM (browser) |
| `wasm32-wasi` | WASM with WASI |
| `thumbv7m-none-eabi` | Cortex-M3 bare metal |
| `thumbv7em-none-eabihf` | Cortex-M4/M7 with FPU |
| `riscv32imac-unknown-none-elf` | RISC-V 32-bit bare metal |

### 3. cross tool (Docker-based, easiest)

`cross` uses pre-built Docker images with the correct cross-toolchain:

```bash
# Install
cargo install cross

# Build (drop-in replacement for cargo)
cross build --target aarch64-unknown-linux-gnu --release
cross test --target aarch64-unknown-linux-gnu

# Cross.toml — project configuration
```

```toml
# Cross.toml
[target.aarch64-unknown-linux-gnu]
image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main"
pre-build = [
    "apt-get update && apt-get install -y libssl-dev:arm64"
]

[build.env]
passthrough = ["PKG_CONFIG_PATH", "OPENSSL_DIR"]
```

### 4. cargo-zigbuild (zero-setup, uses zig cc)

`zig cc` ships a complete C cross-toolchain — no system cross-compiler needed:

```bash
# Install
cargo install cargo-zigbuild
# Also needs zig installed: https://ziglang.org/download/

# Build (no Docker, no system cross-compiler)
cargo zigbuild --target aarch64-unknown-linux-gnu --release
cargo zigbuild --target x86_64-unknown-linux-musl --release

# Target with glibc version (important for compatibility)
cargo zigbuild --target aarch64-unknown-linux-gnu.2.17 --release
# This builds against glibc 2.17 (very compatible)

# Windows from Linux/macOS
cargo zigbuild --target x86_64-pc-windows-gnu --release
```

`cargo-zigbuild` advantages over `cross`:

- No Docker required
- Faster (no container startup)
- Works for most targets out of the box
- Supports precise glibc version targeting

### 5. .cargo/config.toml for cross targets

```toml
# .cargo/config.toml

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"    # System cross-linker
# or with zig:
# linker = "zig"
# rustflags = ["-C", "link-arg=cc", "-C", "link-arg=-target", "-C", "link-arg=aarch64-linux-gnu"]

[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
rustflags = ["-C", "target-feature=+crt-static"]

[target.wasm32-unknown-unknown]
runner = "wasmtime"    # Run WASM tests with wasmtime

[target.thumbv7m-none-eabi]
runner = "qemu-arm -cpu cortex-m3"
```

### 6. Static binaries with musl

```bash
# Add musl target
rustup target add x86_64-unknown-linux-musl

# Build statically linked binary
cargo build --target x86_64-unknown-linux-musl --release

# Verify it's static
file target/x86_64-unknown-linux-musl/release/myapp
# → ELF 64-bit, statically linked, not stripped

# Or with cargo-zigbuild (easier musl)
cargo zigbuild --target x86_64-unknown-linux-musl --release
```

### 7. Embedded bare-metal (#[no_std])

```toml
# .cargo/config.toml
[build]
target = "thumbv7em-none-eabihf"   # Set default target

[target.'cfg(target_arch = "arm")']
runner = "probe-run --chip STM32F411CE"
```

```rust
// src/main.rs
#![no_std]
#![no_main]

use core::panic::PanicInfo;

#[cortex_m_rt::entry]
fn main() -> ! {
    loop {}
}

#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
    loop {}
}
```

```toml
# Cargo.toml
[dependencies]
cortex-m = "0.7"
cortex-m-rt = "0.7"

[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
```

```bash
cargo build --release  # Uses default target from .cargo/config.toml
```

For target triple reference and embedded setup details, see [references/](references/).

## Related skills

- Use `skills/rust/rustc-basics` for compiler and profile configuration
- Use `skills/compilers/cross-gcc` for the underlying cross-compiler setup
- Use `skills/zig/zig-cross` for Zig's native cross-compilation approach
- Use `skills/build-systems/cmake` when Rust is part of a CMake cross-build

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. CX Codex +1 25 400установок find-docs upstash Тянет актуальную документацию, справочники API и примеры кода для любой библиотеки через Context7 CLI. Пригодится, когда агент отвечает по устаревшим данным обучения. CX Codex +1 9 400установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. CX Codex 92 169установок smart-explore thedotmack Структурно ищет функции и классы через tree-sitter. Пригодится, когда нужно разобраться в кодовой базе без чтения всех файлов. CX Codex +1 7 300установок

Из того же набора90

rust-sanitizers-miri Настраивает проверку unsafe-кода в Rust через Miri и санитайзеры LLVM. Помогает найти неопределённое поведение и гонки данных до релиза. CX Codex +1 527установок concurrency-debugging Скилл ведёт агента по отчётам ThreadSanitizer, графам блокировок Helgrind и зависшим потокам в GDB. Пригодится, когда программа падает или виснет на многопоточке. CX Codex +1 524установок linker-scripts Помогает писать и править скрипты компоновщика GNU ld для bare-metal: регионы памяти, VMA и LMA, инициализация .bss и .data. CX Codex +1 523установок rustc-basics Скилл помогает настраивать флаги rustc, профили Cargo.toml и анализировать промежуточный код. Пригодится при оптимизации релизных сборок и разборе ошибок компилятора. CX Codex +1 521установок wasm-emscripten Скилл ведёт агента через сборку C и C++ в WebAssembly: подбор флагов emcc, экспорт функций, модель памяти, Asyncify и отладка .wasm. CX Codex +1 513установок zig-debugging Скилл для ИИ-агента: разбирает паники Zig, error return traces и сессии GDB/LLDB. Пригодится, когда программа падает, а стек нечитаемый. CX Codex +1 511установок zig-build-system Помогает агенту писать и отлаживать build.zig: исполняемые файлы, библиотеки, C-исходники, опции сборки и тесты. CX Codex +1 508установок build-acceleration Скилл для ИИ-агентов, который помогает разобраться, почему сборка C/C++ идёт медленно, и настроить кэш, распределённую компиляцию и PCH. CX Codex +1 506установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой