Android

如需在 AOSP 中构建裸机 Rust 二进制文件,应使用 rust_ffi_static Soong 规则来构建 Rust 代码,然后通过 cc_binary 和链接器脚本生成二进制文件本身,再使用 raw_binary 将 ELF 转换为可以正常运行的原始二进制文件。

  1. rust_ffi_static {
  2. name: "libvmbase_example",
  3. defaults: ["vmbase_ffi_defaults"],
  4. crate_name: "vmbase_example",
  5. srcs: ["src/main.rs"],
  6. rustlibs: [
  7. "libvmbase",
  8. ],
  9. }
  10. cc_binary {
  11. name: "vmbase_example",
  12. defaults: ["vmbase_elf_defaults"],
  13. srcs: [
  14. "idmap.S",
  15. ],
  16. static_libs: [
  17. "libvmbase_example",
  18. ],
  19. linker_scripts: [
  20. "image.ld",
  21. ":vmbase_sections",
  22. ],
  23. }
  24. raw_binary {
  25. name: "vmbase_example_bin",
  26. stem: "vmbase_example.bin",
  27. src: ":vmbase_example",
  28. enabled: false,
  29. target: {
  30. android_arm64: {
  31. enabled: true,
  32. },
  33. },
  34. }