Debian下编译librocksdb-sys v0.8.0+7.4.4失败求助
解决Debian系统下librocksdb-sys v0.8.0+7.4.4编译失败问题
一、安装完整编译依赖
仅安装clang不足以满足RocksDB的编译需求,需安装全套依赖:
sudo apt update sudo apt install build-essential clang libgflags-dev libsnappy-dev liblz4-dev libzstd-dev libbz2-dev libllvm-dev
build-essential提供基础编译工具链libgflags-dev等是RocksDB依赖的压缩/扩展库libllvm-dev为bindgen(Rust生成C绑定的工具)提供必要支持
二、更新Rust工具链
确保Rust环境为最新版,避免版本兼容问题:
rustup update
三、修复bindgen枚举解析错误
你遇到的'enum_(unnamed_at_rocksdb/include/rocksdb/c_h_981_1)'不是有效Ident错误,是bindgen解析RocksDB头文件时无法处理未命名枚举导致的,可通过以下两种方式解决:
方法1:指定兼容的bindgen版本
在项目的Cargo.toml中添加patch,强制使用与librocksdb-sys v0.8.0兼容的bindgen版本:
[patch.crates-io] bindgen = { version = "0.64.0" }
之后重新执行cargo build。
方法2:手动编译并使用系统版RocksDB
如果绑定生成问题仍存在,可跳过librocksdb-sys的自动编译,直接使用系统安装的RocksDB 7.4.4:
# 下载对应版本源码 git clone --branch v7.4.4 https://github.com/facebook/rocksdb.git cd rocksdb # 编译共享库 make shared_lib -j$(nproc) # 安装到系统 sudo make install # 告诉cargo使用系统RocksDB export ROCKSDB_SYS_USE_PKG_CONFIG=1
回到项目目录执行cargo build即可。
内容的提问来源于stack exchange,提问作者Tomasz Waszczyk
相关产品推荐
相关产品推荐

