A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Moduli binari
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
I binari Rust possono essere prodotti utilizzando il tipo di modulo rust_binary
; ad esempio:
rust_binary {
name: "hello_rust",
srcs: ["src/hello_rust.rs"],
}
Analogamente, puoi utilizzare rust_binary_host
per fornire un modulo solo per l'host.
Proprietà rust_binary importanti
Oltre alle proprietà comuni importanti, anche le seguenti proprietà sono importanti o presentano un comportamento unico specifico per il tipo di modulo rust_binary
:
- static_executable: compila questo file binario come file binario statico e presuppone che
prefer_rlib
sia true
. È possibile produrre eseguibili completamente statici solo per i target bionic. Per i target non bionici, ciò implica solo che prefer_rlib
è true
, ma collega comunque libc
e libdl
in modo dinamico.
- prefer_rlib: modifica il collegamento
rustlibs
in modo da selezionare il collegamento rlib
per impostazione predefinita per i target dispositivo e collega libstd
come rlib
per i target dispositivo. Tieni presente che questo è il comportamento predefinito per i target host e
non ha alcun impatto su di essi.
Collegamento
Per impostazione predefinita, i moduli rust_binary
che hanno come target i dispositivi sono sempre collegati dinamicamente a libstd
e per impostazione predefinita preferiscono le librerie dylib
per le dipendenze elencate in rustlibs
, a meno che prefer_rlib
non sia true
. Se sono richiesti file binari completamente statici, consulta la proprietà static_executable
.
I moduli host sono sempre collegati in modo statico a libstd
e per impostazione predefinita preferiscono le librerie rlib
per le dipendenze elencate in rustlibs
.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Binary modules\n\nRust binaries can be produced using the `rust_binary` module type; for example: \n\n rust_binary {\n name: \"hello_rust\",\n srcs: [\"src/hello_rust.rs\"],\n }\n\nSimilarly, you can use `rust_binary_host` to provide a host-only\nmodule.\n\nNotable rust_binary properties\n------------------------------\n\nIn addition to the [Important common properties](/docs/setup/build/rust/building-rust-modules/android-rust-modules#important-common-properties),\nthe following properties are also either important, or exhibit unique behavior\nspecific to the `rust_binary` module type:\n\n- **static_executable** : Builds this binary as a static binary, and implies `prefer_rlib` is `true`. Fully static executables can only be produced for bionic targets. For non-bionic targets, this implies only that `prefer_rlib` is `true`, but it still links `libc` and `libdl` dynamically.\n- **prefer_rlib** : Changes the `rustlibs` linkage to select the `rlib` linkage by default for device targets, and links `libstd` as an `rlib` on device targets. Note that this is the default behavior for host targets, and has no impact on them.\n\nLinkage\n-------\n\nBy default, `rust_binary` modules that are targeting devices are always linked\ndynamically against `libstd` and by default will prefer `dylib` libraries for\ndependencies listed in `rustlibs` unless `prefer_rlib` is `true`. If fully\nstatic binaries are required, see the `static_executable` property.\n\nHost modules are always linked statically against `libstd` and\nby default prefer `rlib` libraries for dependencies that are listed in\n`rustlibs`."]]