BerkeleyDB安装及配置

    技术2026-01-13  7

      BerkeleyDB安装及配置 收藏

    安装过程:   (环境: Kubuntu 7.10) 从其oracle公司官网http://www.oracle.com/technology/software/products/berkeley-db/index.html获得其安装包,当前版本为4.6.21     #tar zxfv db-4.x.tgz     #cd db-4.x/build_unix  (仅用于unix平台安装)     #../dist/configure  (主意: 1、如果以gcc和g++编译的话,须执行#env CC=gcc CCC=g++ ../dist/configure,否则编译时出现段错误 2、 默认状态,berkeleyDB的lib和include将被安装到/usr/local/BerkeleyDB/下,需要更改这个路径的话,可以加上选 项--prefix,例如:#../dist/configure --prefix=/opt/BerkeleyDB.)     #make     #make install     #vi /etc/ld.so.conf (并 将berkeleyDB的lib路径加到该文件的最后一行,这样才能找到并加载它的库文件.ld.so.conf是系统动态链接库的配置文件.此文件内, 存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号 分隔.)     #ldconfig (#make uninstall卸载) 编译方法(源文件为test.c):     #gcc test.c -ggdb -I/usr/local/BerkeleyDB.4.6/include/ -L/usr/local/BerkeleyDB.4.6/lib/ -ldb -lpthread -o test.out unix系统参考指南:http://www.oracle.com/technology/documentation/berkeley-db/db/ref/build_unix/solaris.html BerkeleyDB参考资料:http://www.oracle.com/technology/documentation/berkeley-db/db/ref/toc.html 可使用如下程序测试_______________ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //only this head should include for use bdb. #include <db.h> #define DATABASE "free.db" #define DBLOCAT "/home/free/code/cc++/new" int main() {     DB_ENV *myEnv;     DB *dbp;     DBT key, data;     int ret,t_ret;     u_int32_t env_flags;     //........... Create an environment object and initialize it for error reporting     ret = db_env_create(&myEnv, 0);     if (ret != 0)     {         fprintf(stderr, "Error creating env handle: %s/n", db_strerror(ret));         return -1;     }     //........If the environment does not exist create it. Initialize the in-memory cache.     env_flags = DB_CREATE | DB_INIT_MPOOL;     //........Open the environment.     ret = myEnv->open(myEnv,DBLOCAT,env_flags,0);     if (ret != 0)     {         fprintf(stderr, "Environment open failed: %s", db_strerror(ret));         return -1;     }     if ((ret = db_create(&dbp, myEnv, 0)) != 0)     {         fprintf(stderr, "db_create: %s/n", db_strerror(ret));         exit (1);     }     if ((ret = dbp->open(dbp, NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0)     {         dbp->err(dbp, ret, "%s", DATABASE);         exit (1);     }     memset(&key, 0, sizeof(key));     memset(&data, 0, sizeof(data)); key.data = "sport";     key.size = sizeof("sport");     data.data = "football";     data.size = sizeof("football");     /*     //......put data     if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) == 0)     {         printf("db: %s: key stored./n", (char *)key.data);     }     else     {         dbp->err(dbp, ret, "DB->put");     }     */     //........put data NOOVERWRITE     if ((ret = dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) == 0)         printf("db: %s: key stored./n", (char *)key.data);     else         dbp->err(dbp, ret, "DB->put");     //.......get data     if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)         printf("db: %s: key retrieved: data was %s./n", (char *)key.data, (char *)data.data);     else         dbp->err(dbp, ret, "DB->get");      //......del data     if((ret = dbp->del(dbp, NULL, &key, 0)) == 0)         printf("db: %s: key was deleted./n", (char *)key.data);     else         dbp->err(dbp, ret, "DB->del");     //.........close, only when the db successful closed,the data can real write to the disk.     //if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)     //ret = t_ret;     //exit(ret);     if (dbp != NULL)         dbp->close(dbp, 0);     //.........close evn     //........When you are done with an environment, you must close it.     //........Before you close an environment, make sure you close any opened databases     if (myEnv != NULL)         myEnv->close(myEnv, 0);      return 0; }

    最新回复(0)