leveldb源码编译和调试

2022-09-28 22:24:43 浏览数 (1)

一、下载和编译

代码语言: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 编译

一共分为预处理、编译优化、汇编、链接四个阶段

  1. 预处理: 将#define、#include展开, 处理宏定义条件判断语句#if、#ifdef等语句。
  2. 编译优化: 进行词法分析、语法分析并生成汇编文件。
  3. 汇编: 将汇编语言汇编为机器指令, 也就是目标文件。
  4. 链接: 将目标文件链接在一起生成可执行文件, 又分为静态链接和动态链接, 静态链接是生成可执行文件时链接, 动态链接是运行时动态加载。 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一下。
 

0 人点赞