编译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=true
中RTTI
的全称是Run-Time Type Identification
。相关:
undefined-reference-to-typeinfo-for-rocksdb-Customizable
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
了。