標籤:leveldb
Windows下編譯LevelDB
flyfish 2015-7-8
LevelDB是開源的存在磁碟上的key-value儲存 由google的Jeffrey Dean 和Sanjay Ghemawat編寫。
環境
作業系統:windows x64
編譯器: VC2010
配置
需要Boost庫支援,需要先將Boost庫編譯為64位版本
1檔案-》建立-》從現有代碼檔案建立新項目
開啟 從現有代碼檔案建立新項目 嚮導視窗
2要建立什麼類型的項目? 選擇Visual C++
3專案檔位置 選擇源碼所在位置leveldb-windows檔案夾所在位置
這裡源碼檔案在E:\LIB\leveldb-windows目錄中,所以使用的是E:\LIB\leveldb-windows
4項目名稱填寫 LevelDB
5使用Visual Studio 項目類型選擇 靜態庫(LIB)項目
如果靜態庫(LIB)項目沒有匯入成功,可以先選擇Windows應用程式項目
6 在設定"調試"配置的設定 中
前置處理器定義 填寫 LEVELDB_PLATFORM_WINDOWS;OS_WIN
包括搜尋路徑 填寫 E:\LIB\leveldb-windows;E:\LIB\leveldb-windows\include
不填寫也可以。後期可以在項目屬性中配置
檢查配置部分 Boost庫在E:\LIB\boost64目錄下
在項目的屬性頁面中 配置成64位平台
配置屬性-》常規-》配置類型
靜態庫(.lib)
配置屬性-》C/C++-》常規-》附加元件封裝含目錄
E:\LIB\boost64;E:\LIB\leveldb-windows;E:\LIB\leveldb-windows\include
配置屬性-》C/C++-》常規-》前置處理器-》前置處理器定義
LEVELDB_PLATFORM_WINDOWS;OS_WIN
連結器-》常規-》附加庫目錄 或者 庫管理器-》附加庫目錄
E:\LIB\boost64\stage\lib
排除檔案
手動從項目中排除所有的 *_test.cc 和*_bench.cc 檔案
排除其他平台的檔案
port/port_android.cc
port/port_posix.cc
util/env_posix.cc
如果存在其他平台也排除
改源碼的地方
1 db\c.cc檔案中標頭檔unistd.h
unistd.h 是 C 和 C++ 程式設計語言中提供對 POSIX 作業系統 API 的訪問功能的標頭檔的名稱。是Unix Standard的縮寫。
windows下不支援.直接注釋即可
2 port\port.h檔案中
註明使用的是windows系統
在先行編譯中增加
#ifndef STORAGE_LEVELDB_PORT_PORT_H_#define STORAGE_LEVELDB_PORT_PORT_H_#include <string.h>// Include the appropriate platform specific file below. If you are// porting to a new platform, see "port_example.h" for documentation// of what the new port_<platform>.h file must provide.#if defined(LEVELDB_PLATFORM_POSIX)# include "port/port_posix.h"#elif defined(LEVELDB_PLATFORM_CHROMIUM)# include "port/port_chromium.h"#elif defined(LEVELDB_PLATFORM_ANDROID)# include "port/port_android.h"#elif defined(LEVELDB_PLATFORM_WINDOWS)// 新增部分# include "port/port_win.h"#endif // STORAGE_LEVELDB_PORT_PORT_H_#endif
增加部分是
#elif defined(LEVELDB_PLATFORM_WINDOWS)
#include "port/port_win.h"
編譯產生64位的lib
已編譯好源碼和庫檔案
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Windows下編譯LevelDB