天天看點

leveldb源碼編譯和調試一、下載下傳和編譯二、C++編譯三、自測

一、下載下傳和編譯

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目錄下。

三、自測

# 單獨編譯
sudo g++ -o app_test.o app_test.cc build/libleveldb.a -lpthread -std=c++17

# 如果修改了leveldb代碼,記得重新cmake一下。
            

複制