一、下载和编译
代码语言:shell复制bash git clone --recurse-submodules https://github.com/google/leveldb.git
mkdir -p build && cd build
//发布版本, 断点进不去
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
//调试, 可调试
cmake -DCMAKE_BUILD_TYPE=Debug .. && cmake --build .
二、C 编译
一共分为预处理、编译优化、汇编、链接四个阶段
- 预处理: 将#define、#include展开, 处理宏定义条件判断语句#if、#ifdef等语句。
- 编译优化: 进行词法分析、语法分析并生成汇编文件。
- 汇编: 将汇编语言汇编为机器指令, 也就是目标文件。
- 链接: 将目标文件链接在一起生成可执行文件, 又分为静态链接和动态链接, 静态链接是生成可执行文件时链接, 动态链接是运行时动态加载。 leveldb编译后会生成一个静态链接文件: libleveldb.a, 编译调试文件时记得链接, 也可以加入到/usr/local/lib中, 而leveldb/include可以加入到/usr/local/include目录下。
三、自测
代码语言:shell复制# 单独编译
sudo g -o app_test.o app_test.cc build/libleveldb.a -lpthread -std=c 17
# 如果修改了leveldb代码,记得重新cmake一下。