第一步先下载源码,解压后 ./dist/configure --enable-cxx编译,然后make, make install
  • --enable-cxx

    To build the Berkeley DB C++ API, enter --enable-cxx as an argument to configure.

默认的安装路径是:

/usr/local/BerkeleyDB.6.1/

代码如下:

#include <stdlib.h>
#include <string.h> #include <iostream>
#include <iomanip>
#include <string> #include <db_cxx.h> using namespace std; const char* kDatabaseName = "access.db"; int main() { string fruit("fruit");
string apple("apple");
string orange("orange"); DbEnv env();
Db* pdb; try {
env.set_error_stream(&cerr);
env.open("/Users/wangyi/db", DB_CREATE | DB_INIT_MPOOL, ); pdb = new Db(&env, );
// If you want to support duplicated records and make duplicated
// records sorted by data, you need to call:
// pdb->set_flags(DB_DUPSORT);
// Note that only Btree-typed database supports sorted duplicated
// records // If the database does not exist, create it. If it exists, clear
// its content after openning.
pdb->open(NULL, "access.db", NULL, DB_BTREE, DB_CREATE | DB_TRUNCATE, ); Dbt key(const_cast<char*>(fruit.data()), fruit.size());
Dbt value(const_cast<char*>(apple.data()), apple.size()+);
pdb->put(NULL, &key, &value, ); Dbt value_orange(const_cast<char*>(orange.data()), orange.size()+);
pdb->put(NULL, &key, &value_orange, ); // You need to set ulen and flags=DB_DBT_USERMEM to prevent Dbt
// from allocate its own memory but use the memory provided by you.
char buffer[];
Dbt data;
data.set_data(buffer);
data.set_ulen();
data.set_flags(DB_DBT_USERMEM);
if (pdb->get(NULL, &key, &data, ) == DB_NOTFOUND) {
cerr << "Not found" << endl;
} else {
cout << "Found: " << buffer << endl;
} if (pdb != NULL) {
pdb->close();
delete pdb;
// You have to close and delete an exisiting handle, then create
// a new one before you can use it to remove a database (file).
pdb = new Db(NULL, );
pdb->remove("/Users/wangyi/db/access.db", NULL, );
delete pdb;
}
env.close();
} catch (DbException& e) {
cerr << "DbException: " << e.what() << endl;
return -;
} catch (std::exception& e) {
cerr << e.what() << endl;
return -;
} return ;
}

编译:

g++ -o cass cassandra_demo.cpp -I /usr/local/BerkeleyDB.6.1/include/ -L /usr/local/BerkeleyDB.6.1/lib/ -ldb_cxx-6.1

运行:

export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.6.1/lib/

./cass

参考:

https://docs.oracle.com/cd/E17275_01/html/programmer_reference/build_unix_conf.html

https://cxwangyi.wordpress.com/2010/10/10/how-to-use-berkeley-db/

http://stackoverflow.com/questions/2628227/berkeley-db-cant-compile-c-codes

BDB c++例子,从源码编译到运行的更多相关文章

  1. android 源码编译及其运行模拟器相关问题记录

    最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想自己在编译一下源码,并且运行在模拟器中. 源码的版本不同,需要的jdk可能也有所 ...

  2. spark源码编译,运行example遇到:NoClassDefFoundError: org/spark_project/guava/cache/CacheLoader

    基本环境: win10+idea Scala2.11.8 maven3.5.3 spark2.1.0 问题: 在window10下编译spark2.1.0源码,在idea下运行example,遇到问题 ...

  3. zxing源码编译与运行

    编译的jar文件下载地址:http://files.cnblogs.com/rainboy2010/zxing.zip zxing是一个开源的解析条形码/二维码的类库,广泛应用于Android 各大A ...

  4. Go Mobile 例子 basic 源码分析

    OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形API的子集,针对手机.PDA和游戏主机等嵌入式设备而设计.该API由Khronos集团定义推广, ...

  5. centos7源码编译安装Subversion 1.9.5

    svn是Subversion的简称,是一个开放源代码的版本控制系统.svn有两种运行方式:1.独立服务器(svn://xxx.xxx/xxx) 2.借助apache(http://svn.xxx.xx ...

  6. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  7. DevExpress源码编译总结 z

    本篇文章内容包括基础知识(GAC.程序集强签名.友元程序集).编译过程.注册GAC.添加工具箱.多语言支持.运行时和设计时调试 源码地址 链接:http://pan.baidu.com/s/1eQm1 ...

  8. CentOS6.5下搭建LAMP环境(源码编译方式)

    CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL) 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP ,WAMP,MAMP等.这里我介 ...

  9. DevExpress源码编译总结

    独家提供完整可编译sln文件,本篇文章内容包括基础知识(GAC.程序集强签名.友元程序集).编译过程.注册GAC.添加工具箱.多语言支持.运行时和设计时调试 源码地址  链接:http://pan.b ...

随机推荐

  1. jsp、Html页面注释的种类

    <!-- 这里面的注释在查看页面源代码时,依旧可以看到,另外页面加载时这里面注释的内容仍旧会编译 --> <%-- JSP中的注释,这里面的内容在查看页面源代码时,看不到这里面注释书 ...

  2. Struts2牛逼的拦截器,卧槽这才是最牛的核心!

    struts 拦截器 一 拦截器简介及简单的拦截器实例 Struts2拦截器是在访问某个Action或者Action的某个方法,在字段前或者之后实施拦截,并且Struts2拦截器是可以插拔的,拦截器是 ...

  3. C51单片机头文件和启动文件

    STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 <reg51.h>  //特殊寄存器的字节地址和位地址,sfr定义字 ...

  4. nginx源码学习资源(不断更新)转

    原文地址:http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx ...

  5. Codevs1062路由选择

    /* #include<iostream> #include<cstdio> #include<cstring> #define MAXN 301 using na ...

  6. [Code Plus#4] 最短路

    题目背景 在北纬 91° ,有一个神奇的国度,叫做企鹅国.这里的企鹅也有自己发达的文明,称为企鹅文明.因为企鹅只有黑白两种颜色,所以他们的数学也是以二进制为基础发展的. 比如早在 1110100111 ...

  7. 在matlab中对中国地图中的不同省份按照高度进行渲染

    直接上优化后的代码和效果图 colour_totall=128; % 载入地图数据 --各省的多边形数据 shp_data=shaperead('maps/bou2_4p.shp', 'UseGeoC ...

  8. COCOS学习笔记--重力感应Acceleration

    Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...

  9. C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲

     使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include<iostream> #include< ...

  10. gameplay理解

    Camera视角:确定显示的视场及视角. Game:显示的基类.静态单例模式.但是获取方式很奇怪. Game::getInstance得到的是__gameInstance,但是__gameInstan ...