ohos_tikv-jemalloc-sys:基于 OpenHarmony PC 平台的 Rust 全局分配器演示项目

移植Rust语言的三方库tikv-jemalloc-sys到鸿蒙PC平台

分支1Tags0
文件最后提交记录最后更新时间
2 个月前
2 个月前
2 个月前

jemalloc_demo

OpenHarmony PCaarch64-unknown-linux-ohos)平台上使用 jemalloc 作为 Rust 全局分配器的演示项目。

项目目的

  • 验证 tikv-jemallocator + tikv-jemalloc-sys 在 ohos 目标下的编译和运行
  • 提供一份可直接构建、运行的参考实现
  • 记录移植踩坑和修复方案(详见 doc/port.md

依赖关系

jemalloc_demo (binary)
└── tikv-jemallocator 0.6
    └── tikv-jemalloc-sys (本地修补版)
        └── jemalloc 5.3.0 (C 源码,通过 configure + make 编译)

Cargo.toml 通过 [patch.crates-io]tikv-jemalloc-sys 替换为本地目录 tikv-jemalloc-sys-local,其中包含对 ohos 平台的必要修补。

前提条件

  • Rust 工具链(rustc + cargo)
  • OpenHarmony PC(aarch64-unknown-linux-ohos
  • /dev/shm 可写(用于 configure 临时文件)

快速开始

# 1. 进入项目目录
cd /storage/Users/currentUser/Desktop/test/rust_test

# 2. 构建(自动编译 jemalloc C 源码 + Rust 代码)
cargo build

# 3. 运行验证
cargo run

预期输出:

使用 jemalloc 作为全局分配器
Jemalloc 已初始化为全局分配器
map = {"key2": "value2", "key1": "value1"}

项目结构

rust_test/
├── Cargo.toml                    # 项目配置 + patch 到本地 jemalloc-sys
├── src/
│   └── main.rs                   # 演示用全局分配器
├── tikv-jemalloc-sys-local/      # 本地修补版 tikv-jemalloc-sys
│   ├── build.rs                  # [已修改] TMPDIR 设置
│   ├── configure/
│   │   └── configure             # [已修改] 去掉 umask 077
│   └── jemalloc/
│       └── build-aux/
│           └── config.sub        # [已修改] 添加 ohos 识别
├── doc/
│   └── port.md                   # 移植过程详细记录
└── README.md                     # 本文件

移植要点(详见 doc/port.md)

问题 简述
config.sub 不识 ohos 添加 ohos*linux-ohos* 条目
/tmp 只读 build.rs 设置 TMPDIR=/dev/shm
umask 077 导致不可写 configure 中去掉 umask 077
不存在的 Rust API main.rs 移除 version() 调用

License

本项目代码仅供移植参考。

项目介绍

移植Rust语言的三方库tikv-jemalloc-sys到鸿蒙PC平台

定制我的领域