小明思考

          Just a software engineer
          posts - 124, comments - 36, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          leveldb研究 - 編譯/調(diào)試

          Posted on 2012-03-08 11:44 小明 閱讀(4839) 評(píng)論(1)  編輯  收藏 所屬分類: 分布式計(jì)算
          leveldb是 google對(duì)bigtable的一個(gè)簡(jiǎn)化版的開(kāi)源實(shí)現(xiàn),很有研究?jī)r(jià)值。

          我的編譯環(huán)境:ubuntu 32&g++ 4.6

          1.安裝git并下載代碼

          sudo apt-get install git-core
          git clone https:
          //code.google.com/p/leveldb/

          2. 編譯leveldb

          cd leveldb
          .
          /build_detect_platform
          make

          為了能夠調(diào)試,修改Makefile為debug mode(B模式)
          OPT ?= -g2

          編譯后會(huì)生成庫(kù)文件:libleveldb.a

          3. 編寫(xiě)測(cè)試程序
          ldbtest.cpp
          #include <iostream>
          #include 
          "leveldb/db.h"

          using namespace std;
          using namespace leveldb;

          int main() {
              DB 
          *db ;
              Options op;
              op.create_if_missing 
          = true;
              Status s 
          = DB::Open(op,"/tmp/testdb",&db);

              
          if(s.ok()){
                  cout 
          << "create successfully" << endl;
                  s 
          = db->Put(WriteOptions(),"abcd","1234");
                  
          if(s.ok()){
                      cout 
          << "put successfully" << endl;
                      
          string value;
                      s 
          = db->Get(ReadOptions(),"abcd",&value);
                      
          if(s.ok()){
                          cout 
          << "get successfully,value:" << value << endl;
                      }
                      
          else{
                          cout 
          << "get failed" << endl;
                      }
                  }
                  
          else{
                      cout 
          << "put failed" << endl;
                  }
              }
              
          else{
                  cout 
          << "create failed" << endl;
              }
              delete db;
              
          return 0;
          }
          注意link的時(shí)候需要加上-lpthread.

          運(yùn)行后得到結(jié)果:(Eclipse中運(yùn)行)


          評(píng)論

          # re: leveldb研究 - 編譯/調(diào)試  回復(fù)  更多評(píng)論   

          2012-03-15 14:47 by ayanmw
          給你補(bǔ)充下:
          編譯命令為g++ ldbtest.cpp -o ldbtest -L. -I./include -lpthread -lleveldb

          (工作目錄就是leveldb目錄中) include下面是leveldb的頭文件,-L 搜索library 為了libleveldb.a能夠被調(diào)用。

          另外,編譯的時(shí)候 可以將Makefile中說(shuō)的snappy 壓縮 也帶上,還有谷歌perfecttools ,這個(gè)可選。壓縮還是有必要的吧。
          主站蜘蛛池模板: 冀州市| 根河市| 泗水县| 扎兰屯市| 乌拉特前旗| 久治县| 嘉义市| 屏山县| 城步| 上栗县| 普宁市| 都江堰市| 汾西县| 阜新市| 平湖市| 灌南县| 隆化县| 浮梁县| 灵石县| 长岭县| 仙游县| 宁海县| 黑龙江省| 遂昌县| 黔西| 宝鸡市| 章丘市| 广灵县| 上思县| 丹阳市| 靖西县| 晋城| 鸡西市| 南雄市| 玛纳斯县| 浠水县| 澄江县| 高雄县| 正蓝旗| 建德市| 东乌珠穆沁旗|