一、下載下傳和編譯
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目錄下。
三、自測
# 單獨編譯
sudo g++ -o app_test.o app_test.cc build/libleveldb.a -lpthread -std=c++17
# 如果修改了leveldb代碼,記得重新cmake一下。
複制