berkeley db实践1-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3976771
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 数据库开发技术

2008-03-15 16:23:49

下载了个 berkeley db, 在google上查询的可以上这下载:

早晨起来按照代码中给的实例来调式自己本身带的"db-4.5.20/examples_c/getting_started"实例, 自己写了个简单makefile编译通过了, 什么问题也没有, 但运行起来出问题了. 段错误, 自己用gdb调式了一下发现出错的地方是:
gettingstarted_common.c文件中的:
   ret = dbp->open(dbp,        /* pointer to the database */
                    null,       /* txn pointer */
                    file_name,  /* file name */
                    null,       /* logical db name */
                    db_btree,   /* database type (using btree) */
                    open_flags, /* open flags */
                    0);         /* file mode. using defaults */

出现段错误的, 怎么找也不知道为什么错误了. 后来听说可以不用安装berkeley db就可以使用berkeley db的, 所以自己就把源文件中的库给从新复制到一个新的地方, 头文件也给复制到新地方, 再编译. 后来一想db.h是直接写成:
#include 的, 那么gcc编译的时候就应该上"/usr/include/"中找头文件的啊, 如是重新修改为: #include "db.h", 让gcc上我指定的地方找头文件, 一编译ok了, 运行过去了.

什么原因:
[gan@localhost include]$ ls -l db.h
lrwxrwxrwx  1 root root 8 2007-06-02  db.h -> db4/db.h
[gan@localhost include]$ uname -a
linux localhost.localdomain 2.6.9-34.el #1 fri feb 24 16:44:51 est 2006 i686 i686 i386 gnu/linux

原来自己机器上早就安装了bdb了, 但两个版本不一样, 我原来错误的时候是因为:
    编译的头文件是"sleepycat software: berkeley db 4.2.52: (december 11, 2004)"的头文件, 但连接使用的库是"berkeley db 4.5.20: (september 20, 2006)", 这些信息可以上db.h中看到的.

自己写的简单makefile: (用来编译db-4.5.20/examples_c/getting_started下的文件用的)

dblib = ${home}/src/bdb/libs/libdb.a
inc= ${home}/src/bdb/include

all: bdb_load bdb_read

bdb_load: example_database_load.o gettingstarted_common.o ${dblib}
        gcc -g -o $@ example_database_load.o gettingstarted_common.o -i${inc} ${dblib} -lpthread

bdb_read: example_database_read.o gettingstarted_common.o ${dblib}
        gcc -g -o $@ example_database_read.o gettingstarted_common.o -i${inc} ${dblib} -lpthread

example_database_read.o: example_database_read.c
        gcc -c -g $< -i${inc}

example_database_load.o: example_database_load.c
        gcc -c -g $< -i${inc}

gettingstarted_common.o: gettingstarted_common.c
        gcc -c -g $< -i${inc}

clean:
        rm -f *.o
        rm -f load

阅读(2191) | 评论(0) | 转发(0) |
0

上一篇:bdb学习

下一篇:berkeley db实践2

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图