编译RocksDB

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
cmake .. -DCMAKE_BUILD_TYPE=Release -DUSE_RTTI=true -DFAIL_ON_WARNINGS=OFF -DUSE_COROUTINES=true -DROCKSDB_BUILD_SHARED=OFF -DPORTABLE=ON
make -j$(nproc)

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

posted @ 2024-09-28 14:11  寻找繁星  阅读(127)  评论(0)    收藏  举报