编译RocksDB

阅读量: searchstar Created: 2022-04-21 19:59:17 Updated: 2025-10-24 21:48:15
Categories: Tags:

make

静态库:

make -j$(nproc) static_lib

动态库:

make -j$(nproc) shared_lib

但是这俩好像只能用一个,在编译另一个之前好像要先make clean一下。相关:rocksdb: /usr/bin/ld: ./memory/concurrent_arena.o: relocation R_X86_64_TPOFF32 against symbol `_ZN7rocksdb15C

cmake

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_RTTI=true -DFAIL_ON_WARNINGS=OFF
# 全部编译
make -j$(nproc)
# 只编译静态库
make -j$(nproc) rocksdb
# 只编译动态库
make -j$(nproc) rocksdb-shared

-DUSE_RTTI=trueRTTI的全称是Run-Time Type Identification。相关:

undefined reference to typeinfo for rocksdb::Customizable

C++ RTTI 实现原理详解

Asynchronous IO

官方文档:https://github.com/facebook/rocksdb/wiki/Asynchronous-IO

先编译安装folly: 编译folly

这里假设folly安装到了$workspace/deps

sudo apt install -y liburing-dev

cd build
# -DPORTABLE=ON: 因为folly编译的时候没有-march=native,所以rocksdb编译的时候也不要-march-native
# -DWITH_LIBURING=OFF: 不知道为什么,如果WITH_LIBURING=ON,db_bench执行完成之后reader不知道为什么会卡住没法返回
cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_RTTI=true -DFAIL_ON_WARNINGS=OFF -DUSE_COROUTINES=true -DROCKSDB_BUILD_SHARED=OFF -DPORTABLE=ON -DWITH_LIBURING=OFF
make -j$(nproc)

然后就可以在ReadOptions里开async_io了。