📄 berkeleydb安装 - berkeley db 中国讨论区 - powered by ofstar_net.htm
字号:
<hr width=100% color=#E5E3E3 size=1>
<img src='images/post/emotion/13.gif' align=left border=0>
<span class="tpc_title">
berkeleyDB安装</span><br>
<span class="tpc_content"><br><br>我们以redhat9为例开始介绍其安装过程:<br /><br /> 从其sleepycat公司官网的下载页<a href='http://dev.sleepycat.com/downloads/releasehistorybdb.html' target=_blank>http://dev.sleepycat.com/downloads/releasehistorybdb.html</a>获得其安装包,现在已经更新到4.4.20.<br /> #tar zxfv db-4.x.tgz<br /> #cd db-4.x/build_unix<br /><br /> 1. 如果以gcc编译的话,进行以下操作:<br /> #vi /dist/configure 在最前面添加:CC gcc<br /> #../dist/configure <br /> #make<br /> #make install<br /> 默认状态,berkeleyDB的lib和include将被安装到/usr/local/BerkeleyDB/下,需要更改这个路径的话,可以将 #../dist/configure一步加上选项--prefix,例如:#../dist/configure --prefix=/opt/BerkeleyDB.<br /> #vi /etc/ld.so.conf 并将berkeleyDB的lib路径加到该文件的最后一行,这样才能找到并加载它的库文件.ld.so.conf是什么东西?它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。<br /> #ldconfig<br /> <br /> 2. 如果以armgcc编译的话,进行以下操作:<br /> 先安装armgcc,对我说就是在/mnt/setup/program/FFT/FFT-2410光盘-V3.0/linux开发/linux交叉编译器/tool或者在gmail中附件里armgcc目录下(除了cross-armv4l-qtE-custom-1.5-3mz.i386.rpm,其他都装)<br /> #cp /mnt/setup/program/FFT/FFT-2410光盘-V3.0/linux开发/linux交叉编译器/tool /usr/tmp/<br /> #cd /usr/tmp/tool<br /> #rpm -ivh *<br /> #ldconfig<br /> 这一系列的工具将默认被装到/opt/host/arm41下.<br /><br /> 安装db-4.4.20.tgz,你甚至可以直接修改configure文件.而对于4.3.29,则不可直接修改configure文件.<br /> #tar zxfv db-4.x.tgz<br /> #cd db-4.x/build_unix<br /> <br /> #vi /dist/configure<br /> 在最前面添加以下几行:<br /> CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc<br /> AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar<br /> RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib<br /> STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip<br /><br /> #../dist/configure --prefix=/opt/db --host=arm41-unknown-linux(这样的话,berkeleyDB的lib和include将被装到/opt/db下.)<br /><br /> 或者:<br /> #env CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc \<br /> AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar \<br /> RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib \<br /> STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip \<br /> ../dist/configure --prefix=/opt/db --host=arm41-unknown-linux<br /><br /> #make<br /> #make install<br /> #vi /etc/ld.so.conf 并将berkeleyDB的lib路径加到该文件的最后一行,在这里就是/opt/db/lib<br /> #ldconfig<br /><br />详见: <a href='http://www.sleepycat.com/docs/ref/build_unix/intro.html' target=_blank>http://www.sleepycat.com/docs/ref/build_unix/intro.html</a><br />附上一段经典的检测是否装好的代码,同时也可以利用该代码入门:<br />#include <db.h><br />#include <stdio.h><br />#include <stdlib.h><br />#include <pthread.h><br /><br />/* DB的函数执行完成后,返回0代表成功,否则失败 */<br />void print_error(int ret)<br />{<br /> if(ret != 0)<br /> printf("ERROR: %s\n",db_strerror(ret));<br />}<br /><br />/* 数据结构DBT在使用前,应首先初始化,否则编译可通过但运行时报参数错误 */<br />void init_DBT(DBT * key, DBT * data)<br />{<br /> memset(key, 0, sizeof(DBT));<br /> memset(data, 0, sizeof(DBT));<br />}<br /><br />void main(void)<br />{<br /> DB *dbp; <br /> DBT key, data;<br /> u_int32_t flags; <br /> int ret;<br /><br /> char *fruit = "apple";<br /> int number = 15;<br /> <br /> typedef struct customer<br /> {<br /> int c_id;<br /> char name[10];<br /> char address[20];<br /> int age;<br /> } CUSTOMER;<br /> CUSTOMER cust;<br /> int key_cust_c_id = 1;<br /><br /> cust.c_id = 1;<br /> strncpy(cust.name, "javer", 9);<br /> strncpy(cust.address, "chengdu", 19);<br /> cust.age = 32;<br /><br /> /* 首先创建数据库句柄 */<br /> ret = db_create(&dbp, NULL, 0);<br /> print_error(ret);<br /> <br /> /* 创建数据库标志 */<br /> flags = DB_CREATE; <br /><br /> /* 创建一个名为single.db的数据库,使用B+树访问算法,本段代码演示对简单数据类型的处理 */<br /> ret = dbp->open(dbp, NULL, "single.db", NULL, DB_BTREE, flags, 0);<br /> print_error(ret);<br /><br /> init_DBT(&key, &data);<br /> <br /> /* 分别对关键字和数据赋值和规定长度 */<br /> key.data = fruit;<br /> key.size = strlen(fruit) + 1;<br /> data.data = &number;<br /> data.size = sizeof(int);<br /><br /> /* 把记录写入数据库中,不允许覆盖关键字相同的记录 */<br /> ret = dbp->put(dbp, NULL, &key, &data,DB_NOOVERWRITE);<br /> print_error(ret);<br /> <br />/* 手动把缓存中的数据刷新到硬盘文件中,实际上在关闭数据库时,数据会被自动刷新 */<br />dbp->sync();<br /> <br />init_DBT(&key, &data);<br /><br /> key.data = fruit;<br /> key.size = strlen(fruit) + 1;<br /> <br /> /* 从数据库中查询关键字为apple的记录 */<br /> ret = dbp->get(dbp, NULL, &key, &data, 0);<br /> print_error(ret);<br /><br /> /* 特别要注意数据结构DBT的字段data为void *型,所以在对data赋值和取值时,要做必要的类型转换。 */<br /> printf("The number = %d\n", *(int*)(data.data));<br /> <br /> if(dbp != NULL)<br /> dbp->close(dbp, 0);<br /><br /> ret = db_create(&dbp, NULL, 0);<br /> print_error(ret);<br /><br /> flags = DB_CREATE; <br /><br /> /* 创建一个名为complex.db的数据库,使用HASH访问算法,本段代码演示对复杂数据结构的处理 */<br /> ret = dbp->open(dbp, NULL, "complex.db", NULL, DB_HASH, flags, 0);<br /> print_error(ret);<br /><br /> init_DBT(&key, &data);<br /><br /> key.size = sizeof(int);<br /> key.data = &(cust.c_id);<br /><br /> data.size = sizeof(CUSTOMER);<br /> data.data = &cust;<br /><br /> ret = dbp->put(dbp, NULL, &key, &data,DB_NOOVERWRITE);<br /> print_error(ret);<br /> <br /> memset(&cust, 0, sizeof(CUSTOMER));<br /> <br /> key.size = sizeof(int);<br /> key.data = &key_cust_c_id;<br /><br /> data.data = &cust;<br /> data.ulen = sizeof(CUSTOMER);<br /> data.flags = DB_DBT_USERMEM;<br /><br /> dbp->get(dbp, NULL, &key, &data, 0);<br /> print_error(ret);<br /> <br /> printf("c_id = %d name = %s address = %s age = %d\n",<br /> cust.c_id, cust.name, cust.address, cust.age);<br /> <br /> if(dbp != NULL)<br /> dbp->close(dbp, 0);<br />}<br /> 我们以gcc编译为例:<br /> gcc test.c -ggdb -I/usr/local/BerkeleyDB.4.3/include/ -L/usr/local/BerkeleyDB.4.3/lib/ -ldb -lpthread,如果你用的是eclipse之类的工具的话,记得加上-I,-L,-l的选项哦.<br /> 如果运行时报错:error while loading shared libraries:libdb-4.3.so: cannot open shared object file: No such file or directory的错误(小乌碰到过),请检查一下是否把berkeleyDB的lib路径加入到/etc/ld.so.conf中.<br></span>
</td></tr><form method=post>
<tr valign=bottom bgcolor='#FFFfFF'>
<td colspan=5>
<br>
<!---->
<img src='images/ofstar/sigline.gif' border=0>
<br>http://blog.sina.com.cn/u/1210195593<br />乌焦巴弓<br>
<!---->
<font color=red>[0楼]</font>
| IP:已记录|
<span class=bold>Posted:</span>2006-03-29 4:00 AM|</td>
<td align=right vAlign=bottom><a href="javascript:scroll(0,0)"><img src='images/ofstar/read/top.gif' border=0 alt='回到顶端'></a></td></tr></form>
</table></td></tr></table>
<table width='98%' align=center>
<tr><td height=1></td></tr>
</table>
<!--<!--帖子模版-->
<table cellspacing=1 cellpadding=0 width='98%' style='TABLE-LAYOUT: fixed;WORD-WRAP: break-word;' bgcolor=#E5E3E3 align=center>
<tr><td height="100%" valign=top width='20%' bgcolor='#F7F7F7' style='padding: 5px;'>
<font color=#000066 face=Gulim><span class=bold>f30feeder</span></font>
<table width=95% border=0 cellspacing=0 cellpadding=0 style='table-layout: fixed'>
<tr><td align=center><br>
<img src='images/face/0.gif' border=0></td></tr>
</table><br>
<img src='images/ofstar/level/0.gif'><br>
级别: <font color=#555555>新手上路<img src='images/ofstar/read/offonline.gif' alt='该用户目前不在线'></font><br>
发贴: <font color=green><span class=bold>9</span></font><br>
威望: <font color=984b98><span class=bold>3</span></font><br>
金钱: <font color=red><span class=bold>17</span></font><br>
注册时间:2006-10-18<br>
最后登陆:2007-02-12
</td>
<td width='80%' height="100%" bgcolor='#F7F7F7' valign=top>
<table width='99%' height="100%" align=center cellspacing=0 cellpadding=4 style='TABLE-LAYOUT: fixed;WORD-WRAP: break-word'>
<tr><td bgcolor='#F7F7F7' width='91%' colspan=5 valign=top>
<a href='profile.php?action=show&username=f30feeder'><img src='images/ofstar/read/profile.gif' align=absmiddle border=0 alt='查看作者资料'></a>
<a href='message.php?action=write&msgid=f30feeder'><img src='images/ofstar/read/message.gif' align=absmiddle border=0 alt='发送短消息'></a>
<a href='sendemail.php?username=f30feeder' title='发送邮件'><img src='images/ofstar/read/email.gif' align=absmiddle border=0></a>
<a href='sendemail.php?action=tofriend&fid=1&tid=12&fpage=1'><img src='images/ofstar/read/emailto.gif' align=absmiddle border=0 alt='推荐此贴'></a>
<a href='post.php?action=quote&fid=1&tid=12&article=1'><img src='images/ofstar/read/quote.gif' align=absmiddle border=0 alt='引用回复这个贴子'></a>
<a href='post.php?action=modify&fid=1&tid=12&article=1'><img src='images/ofstar/read/edit.gif' align=absmiddle border=0 alt='删除或编辑改帖子'></a>
<hr width=100% color=#E5E3E3 size=1>
<img src='images/post/emotion/8.gif' align=left border=0>
<span class="tpc_title">
</span><br>
<span class="tpc_content"><br><br>在Linux下编译的时候,应该是CC=gcc吧?<br /><br />我编译C++的库,与官方文档说的方法有所不同:<br />export CC=gcc<br />export CXX=g++<br />cd build_unix<br />../dist/configure --enable-cxx<br />make<br />make install<br /><br />按照官方文档的方法只能编译出支持C的库,无法支持C++<br></span>
</td></tr><form method=post>
<tr valign=bottom bgcolor='#F7F7F7'>
<td colspan=5>
<br>
<!---->
<font color=red>[1楼]</font>
| IP:已记录|
<span class=bold>Posted:</span>2006-10-18 9:17 PM|</td>
<td align=right vAlign=bottom><a href="javascript:scroll(0,0)"><img src='images/ofstar/read/top.gif' border=0 alt='回到顶端'></a></td></tr></form>
</table></td></tr></table>
<table width='98%' align=center>
<tr><td height=1></td></tr>
</table>
<!--<!--帖子模版-->
<table cellspacing=1 cellpadding=0 width='98%' style='TABLE-LAYOUT: fixed;WORD-WRAP: break-word;' bgcolor=#E5E3E3 align=center>
<tr><td height="100%" valign=top width='20%' bgcolor='#FFFfFF' style='padding: 5px;'>
<font color=#000066 face=Gulim><span class=bold>wangfengwf</span></font>
<table width=95% border=0 cellspacing=0 cellpadding=0 style='table-layout: fixed'>
<tr><td align=center><br>
<img src='images/face/0.gif' border=0></td></tr>
</table><br>
<img src='images/ofstar/level/0.gif'><br>
级别: <font color=#555555>新手上路<img src='images/ofstar/read/offonline.gif' alt='该用户目前不在线'></font><br>
发贴: <font color=green><span class=bold>1</span></font><br>
威望: <font color=984b98><span class=bold>1</span></font><br>
金钱: <font color=red><span class=bold>1</span></font><br>
注册时间:2006-11-16<br>
最后登陆:2006-11-17
</td>
<td width='80%' height="100%" bgcolor='#FFFfFF' valign=top>
<table width='99%' height="100%" align=center cellspacing=0 cellpadding=4 style='TABLE-LAYOUT: fixed;WORD-WRAP: break-word'>
<tr><td bgcolor='#FFFfFF' width='91%' colspan=5 valign=top>
<a href='profile.php?action=show&username=wangfengwf'><img src='images/ofstar/read/profile.gif' align=absmiddle border=0 alt='查看作者资料'></a>
<a href='message.php?action=write&msgid=wangfengwf'><img src='images/ofstar/read/message.gif' align=absmiddle border=0 alt='发送短消息'></a>
<a href='sendemail.php?username=wangfengwf' title='发送邮件'><img src='images/ofstar/read/email.gif' align=absmiddle border=0></a>
<a href='sendemail.php?action=tofriend&fid=1&tid=12&fpage=1'><img src='images/ofstar/read/emailto.gif' align=absmiddle border=0 alt='推荐此贴'></a>
<a href='post.php?action=quote&fid=1&tid=12&article=2'><img src='images/ofstar/read/quote.gif' align=absmiddle border=0 alt='引用回复这个贴子'></a>
<a href='post.php?action=modify&fid=1&tid=12&article=2'><img src='images/ofstar/read/edit.gif' align=absmiddle border=0 alt='删除或编辑改帖子'></a>
<hr width=100% color=#E5E3E3 size=1>
<img src='images/post/emotion/8.gif' align=left border=0>
<span class="tpc_title">
</span><br>
<span class="tpc_content"><br><br>我按照上面的方法安装后,在测试里面的例子的时候总是报错:<br />./a.out: error while loading shared libraries: libdb-4.5.so : cannot open shared objects file:No such file or directory<br />不知道是怎么回事,请教各位了!!<br></span>
</td></tr><form method=post>
<tr valign=bottom bgcolor='#FFFfFF'>
<td colspan=5>
<br>
<!---->
<font color=red>[2楼]</font>
| IP:已记录|
<span class=bold>Posted:</span>2006-11-17 7:31 AM|</td>
<td align=right vAlign=bottom><a href="javascript:scroll(0,0)"><img src='images/ofstar/read/top.gif' border=0 alt='回到顶端'></a></td></tr></form>
</table></td></tr></table>
<table width='98%' align=center>
<tr><td height=1></td></tr>
</table>
<!--<!--帖子模版-->
<table cellspacing=1 cellpadding=0 width='98%' style='TABLE-LAYOUT: fixed;WORD-WRAP: break-word;' bgcolor=#E5E3E3 align=center>
<tr><td height="100%" valign=top width='20%' bgcolor='#F7F7F7' style='padding: 5px;'>
<font color=#000066 face=Gulim><span class=bold>xjxy</span></font>
<table width=95% border=0 cellspacing=0 cellpadding=0 style='table-layout: fixed'>
<tr><td align=center><br>
<img src='images/face/0.gif' border=0></td></tr>
</table><br>
<img src='images/ofstar/level/0.gif'><br>
级别: <font color=#555555>新手上路<img src='images/ofstar/read/offonline.gif' alt='该用户目前不在线'></font><br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -