Compilación de Programas (cargo build-sbf)
Compila programas on-chain a sBPF ELF con cargo build-sbf, inspecciona el tamaño del artefacto y prepara archivos .so para el despliegue.
Busca en todas las páginas de la documentación
Compila programas on-chain a sBPF ELF con cargo build-sbf, inspecciona el tamaño del artefacto y prepara archivos .so para el despliegue.
Tarjeta de referencia rápida - lista para copiar y pegar.
cargo build-sbf
cargo build-sbf --release
ls -lh target/deploy/*.so
wc -c target/deploy/my_program.soCuándo usar esto:
solana-program sin el wrapper de 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 de Anchor (llama a build-sbf internamente)
cd ../../
anchor build
ls -lh target/deploy/my_program.soLo que esto demuestra:
cargo build-sbf emite un .so ELF desplegable para el BPF Loader.--sbf-out-dir controla la ubicación de salida para monorepos.anchor build envuelve el mismo pipeline con generación de IDL.#![no_std]..so de salida impulsa la renta de datos del programa en el momento del despliegue..so.| Flag | Propósito |
|---|---|
--release | Binario de producción optimizado |
--sbf-out-dir | Directorio de salida de despliegue personalizado |
--features | Habilitar flags de características del crate |
--tools-version | Sobrescritura de herramientas de plataforma (avanzado) |
# Muestra advertencias de compilación que afectan a la CU (las importaciones no utilizadas aún consumen tiempo de análisis)
cargo build-sbf 2>&1 | tee build.log
# Compara el tamaño de depuración vs. lanzamiento
cargo build-sbf && wc -c target/deploy/*.so
cargo build-sbf --release && wc -c target/deploy/*.so--release para despliegues en devnet/mainnet..so obsoleto. Solución: script de despliegue desde la ruta fija target/deploy.std on-chain - el enlace falla o hincha el binario. Solución: usar solo las APIs de solana-program / anchor-lang.build-sbf de Agave 3.x con peculiaridades del validador 4.x. Solución: alinear con las herramientas de plataforma de Agave 4.1.1.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
anchor build | Espacios de trabajo de Anchor + IDL | Crates nativos puros |
cargo build-bpf (legado) | Tutoriales antiguos | Proyectos nuevos de Agave 4.x |
| Imagen Docker de CI con herramientas fijadas | Compilaciones reproducibles | Iteración local rápida |
solana-verify build | Pipeline de hash verificable | Pruebas rápidas en devnet |
sbf es la denominación actual del bytecode de Solana; build-bpf es un alias legado en documentación antigua.
target/deploy/<program>.so en la raíz del espacio de trabajo después de anchor build.
El cargador impone un tamaño máximo de despliegue (consultar las notas de la versión actual de Agave) - optimizar temprano si se acerca a los límites.
anchor test y cargo test-sbf compilan los harnesses de prueba; el despliegue aún usa el .so de lanzamiento que elijas explícitamente.
Las herramientas de plataforma de Agave distribuyen binarios específicos del host - usa el instalador de Agave para tu SO/arquitectura.
Los módulos opcionales a través de #[cfg(feature)] mantienen el código no utilizado fuera del .so.
El backend LLVM sBPF y LTO - las compilaciones incrementales ayudan; limpia al cambiar de toolchain.
Cachea target/deploy indexado por la toolchain + lockfile para pipelines más rápidos.
Usa llvm-objdump del paquete de herramientas de plataforma en el .so para verificar el punto de entrada.
No - ejecuta cargo clippy por separado para crates off-chain; los lints on-chain son limitados.
.soVersiones de Stack: Esta página fue 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, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 19 jul 2026