移植Rust语言的三方库tikv-jemalloc-sys到鸿蒙PC平台
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |
jemalloc_demo
在 OpenHarmony PC(aarch64-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
本项目代码仅供移植参考。