Construindo Programas (cargo build-sbf)
Compile programas on-chain para ELF sBPF com cargo build-sbf, inspecione tamanho do artefato e prepare arquivos .so para deploy.
Busque em todas as páginas da documentação
Compile programas on-chain para ELF sBPF com cargo build-sbf, inspecione tamanho do artefato e prepare arquivos .so para deploy.
Card de receita de referência rápida - pronto para copiar e colar.
cargo build-sbf
cargo build-sbf --release
ls -lh target/deploy/*.so
wc -c target/deploy/my_program.soQuando usar:
solana-program nativos sem wrapper Anchor.solana program deploy.cd programs/my_native_program
cargo build-sbf --manifest-path Cargo.toml --sbf-out-dir ../../target/deploy
ls -lh ../../target/deploy/
file ../../target/deploy/my_native_program.so
# Equivalente Anchor (chama build-sbf por baixo)
cd ../../
anchor build
ls -lh target/deploy/my_program.soO que isso demonstra:
cargo build-sbf emite .so ELF deployável para BPF Loader.--sbf-out-dir controla local de saída para monorepos.anchor build encapsula o mesmo pipeline com geração de IDL.#![no_std]..so de saída dirige rent programdata no deploy..so.| Flag | Propósito |
|---|---|
--release | Binário de produção otimizado |
--sbf-out-dir | Diretório de saída deploy customizado |
--features | Habilitar feature flags de crate |
--tools-version | Override platform tools (avançado) |
# Mostre warnings de compile que afetam CU (imports não usados ainda custam parse time)
cargo build-sbf 2>&1 | tee build.log
# Compare tamanho debug vs release
cargo build-sbf && wc -c target/deploy/*.so
cargo build-sbf --release && wc -c target/deploy/*.so--release para deploys devnet/mainnet..so obsoleto. Correção: scripte deploy de path fixo target/deploy.solana-program / anchor-lang.| Alternativa | Use quando | Não use quando |
|---|---|---|
anchor build | Workspaces Anchor + IDL | Crates puramente nativos |
cargo build-bpf (legado) | Tutoriais antigos | Projetos Agave 4.x novos |
| Imagem Docker CI com tools fixadas | Builds reproduzíveis | Iteração local rápida |
solana-verify build | Pipeline hash verificável | Testes devnet rápidos |
sbf é nomenclatura atual bytecode Solana; build-bpf é alias legado em docs antigos.
target/deploy/<program>.so na raiz do workspace após anchor build.
Loader impõe tamanho máximo de deploy (verifique release notes Agave atuais) - otimize cedo se aproximar limites.
anchor test e cargo test-sbf compilam harnesses de teste; deploy ainda usa .so release que você escolhe explicitamente.
Agave platform tools enviam binários específicos do host - use installer Agave para seu OS/arch.
Módulos opcionais via #[cfg(feature)] mantêm código não usado fora do .so.
Backend LLVM sBPF e LTO - builds incrementais ajudam; clean ao trocar toolchains.
Cache target/deploy com chave em toolchain + lockfile para pipelines mais rápidos.
Use llvm-objdump do bundle platform tools no .so para verificação de entrypoint.
Não - execute cargo clippy separadamente para crates off-chain; lints on-chain são limitados.
.soVersões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026