Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Бинарные модули
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Двоичные файлы Rust можно создавать с использованием типа модуля rust_binary
, например:
rust_binary {
name: "hello_rust",
srcs: ["src/hello_rust.rs"],
}
Аналогично, вы можете использовать rust_binary_host
для предоставления модуля, предназначенного только для хоста.
Известные свойства rust_binary
Помимо важных общих свойств , следующие свойства также либо важны, либо демонстрируют уникальное поведение, специфичное для типа модуля rust_binary
:
- static_executable : Создает этот двоичный файл как статический двоичный файл и подразумевает, что
prefer_rlib
имеет true
. Полностью статические исполняемые файлы могут быть созданы только для бионических целей. Для небионических целей это подразумевает только, что prefer_rlib
имеет true
, но он по-прежнему динамически связывает libc
и libdl
. - preference_rlib : Изменяет связь
rustlibs
, чтобы выбрать связь rlib
по умолчанию для целевых устройств, и связывает libstd
как rlib
на целевых устройствах. Обратите внимание, что это поведение по умолчанию для целевых устройств и не оказывает на них никакого влияния.
Связь
По умолчанию модули rust_binary
, которые нацелены на устройства, всегда динамически связываются с libstd
и по умолчанию будут предпочитать библиотеки dylib
для зависимостей, перечисленных в rustlibs
если только prefer_rlib
не имеет true
. Если требуются полностью статические двоичные файлы, см. свойство static_executable
.
Модули хоста всегда статически связаны с libstd
и по умолчанию предпочитают библиотеки rlib
для зависимостей, перечисленных в rustlibs
.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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`."]]