Ferramentas de Build & Inspeção
Além do cargo build, ferramentas do Linux inspecionam binários Rust: detalhamento de tamanho, símbolos, modo de linkagem e políticas de strip para deploy.
Receita
cargo build --release --locked
file target/release/my-service
ldd target/release/my-service 2>/dev/null || true
cargo bloat --release -n 20
strip target/release/my-service
ls -lh target/release/my-serviceQuando usar isso:
- Investigação de regressão no tamanho da imagem
- Verificação de binário
muslestático - Depuração de símbolos ausentes em traces de produção
Exemplo de Trabalho
cargo install cargo-bloat
cargo bloat --release --crates -n 15
# Inspecionar símbolos
nm -C target/release/my-service | rg "my_service::" | head
# Desmontar função quente (avançado)
objdump -d --demangle target/release/my-service | less# Cargo.toml - perfil de release
[profile.release]
strip = "symbols"
lto = "thin"
codegen-units = 1O que isso demonstra:
cargo bloatatribui o tamanho às cratesnmlista símbolos mangled/demangledstripdo perfil automatiza a redução pós-linkagem
Mergulho Profundo
Subcomandos do cargo
| Comando | Propósito |
|---|---|
cargo tree -e features | Por que a dependência existe |
cargo llvm-lines | Proxy de tamanho do IR LLVM |
cargo audit | Avisos de segurança |
cargo deny check | Política de licença e banimento |
Armadilhas
- Remover símbolos de debug - traces de produção mais difíceis. Correção: dividir informações de debug no armazenamento de artefatos CI.
bloatem build de desenvolvimento - tamanhos enganosos. Correção: sempre usar--release.lddem binário estático - imprime "not a dynamic executable" - isso é esperado.objdumpem PIE - endereços diferem por execução - use offsets apenas para documentação.- Ignorar
build.rs- flags de linkagem nativa ocultas. Correção: lerbuild.rsao inspecionar a linkagem.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
samply / perf | Profiling em tempo de execução | Apenas tamanho estático |
twiggy | Tamanho WASM | Apenas nativo |
dwarfdump | Análise de informações de debug | Verificação rápida |
FAQs
Qual o tamanho ideal para CLI?
Release com strip geralmente de 2-8 MB dependendo das dependências; investigar se houver um dobro repentino.
cargo bloat vs tree?
bloat mede a contribuição do tamanho linkado; tree mostra apenas o grafo de dependências.
Relacionados
- musl & linkagem estática
- Perfis e configurações de build
- Skill de Performance
- Subcomandos úteis do cargo
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.