⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 berkeleydb安装 - berkeley db 中国讨论区 - powered by ofstar_net.htm

📁 bdb很重要的数据库, 高效!这是bdb入门学习的好资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<hr width=100% color=#E5E3E3 size=1>

<img src='images/post/emotion/13.gif' align=left border=0>
<span class="tpc_title">
&nbsp;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 /> &nbsp;  #tar zxfv db-4.x.tgz<br /> &nbsp;  #cd db-4.x/build_unix<br /><br /> &nbsp; 1. 如果以gcc编译的话,进行以下操作:<br /> &nbsp;  #vi /dist/configure  在最前面添加:CC gcc<br /> &nbsp;  #&#46;&#46;/dist/configure  <br /> &nbsp;  #make<br /> &nbsp;  #make install<br /> &nbsp;  默认状态,berkeleyDB的lib和include将被安装到/usr/local/BerkeleyDB/下,需要更改这个路径的话,可以将 #&#46;&#46;/dist/configure一步加上选项--prefix,例如:#&#46;&#46;/dist/configure --prefix=/opt/BerkeleyDB.<br /> &nbsp;  #vi /etc/ld.so.conf  并将berkeleyDB的lib路径加到该文件的最后一行,这样才能找到并加载它的库文件.ld.so.conf是什么东西?它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。<br /> &nbsp;  #ldconfig<br /> <br /> &nbsp; 2. 如果以armgcc编译的话,进行以下操作:<br /> &nbsp;  先安装armgcc,对我说就是在/mnt/setup/program/FFT/FFT-2410光盘-V3.0/linux开发/linux交叉编译器/tool或者在gmail中附件里armgcc目录下(除了cross-armv4l-qtE-custom-1.5-3mz.i386.rpm,其他都装)<br /> &nbsp;  #cp /mnt/setup/program/FFT/FFT-2410光盘-V3.0/linux开发/linux交叉编译器/tool /usr/tmp/<br /> &nbsp;  #cd /usr/tmp/tool<br /> &nbsp;  #rpm -ivh *<br /> &nbsp;  #ldconfig<br /> &nbsp;  这一系列的工具将默认被装到/opt/host/arm41下.<br /><br /> &nbsp;  安装db-4.4.20.tgz,你甚至可以直接修改configure文件.而对于4.3.29,则不可直接修改configure文件.<br /> &nbsp;  #tar zxfv db-4.x.tgz<br /> &nbsp;  #cd db-4.x/build_unix<br /> &nbsp; <br /> &nbsp;  #vi /dist/configure<br /> &nbsp;  在最前面添加以下几行:<br /> &nbsp;  CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc<br /> &nbsp;  AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar<br /> &nbsp;  RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib<br /> &nbsp;  STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip<br /><br /> &nbsp;  #&#46;&#46;/dist/configure --prefix=/opt/db --host=arm41-unknown-linux(这样的话,berkeleyDB的lib和include将被装到/opt/db下.)<br /><br /> &nbsp;  或者:<br /> &nbsp;  #env CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc \<br /> &nbsp;   AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar \<br /> &nbsp;   RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib \<br /> &nbsp;   STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip \<br /> &nbsp;  &#46;&#46;/dist/configure --prefix=/opt/db --host=arm41-unknown-linux<br /><br /> &nbsp;  #make<br /> &nbsp;  #make install<br /> &nbsp;  #vi /etc/ld.so.conf  并将berkeleyDB的lib路径加到该文件的最后一行,在这里就是/opt/db/lib<br /> &nbsp;  #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 &lt;db.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;pthread.h&gt;<br /><br />/* DB的函数执行完成后,返回0代表成功,否则失败 */<br />void print_error(int ret)<br />{<br /> &nbsp;  if(ret != 0)<br /> &nbsp;  &nbsp;   printf(&quot;ERROR: %s\n&quot;,db_strerror(ret));<br />}<br /><br />/* 数据结构DBT在使用前,应首先初始化,否则编译可通过但运行时报参数错误  */<br />void init_DBT(DBT * key, DBT * data)<br />{<br /> &nbsp;  memset(key, 0, sizeof(DBT));<br /> &nbsp;  memset(data, 0, sizeof(DBT));<br />}<br /><br />void main(void)<br />{<br /> &nbsp;  DB *dbp; &nbsp;  &nbsp;  &nbsp;  <br /> &nbsp;  DBT key, data;<br /> &nbsp;  u_int32_t flags; <br /> &nbsp;  int ret;<br /><br /> &nbsp;  char *fruit = &quot;apple&quot;;<br /> &nbsp;  int number = 15;<br /> &nbsp; <br /> &nbsp;  typedef struct customer<br /> &nbsp;  {<br /> &nbsp;  &nbsp;   int  c_id;<br /> &nbsp;  &nbsp;   char name[10];<br /> &nbsp;  &nbsp;   char address[20];<br /> &nbsp;  &nbsp;   int  age;<br /> &nbsp;  } CUSTOMER;<br /> &nbsp;  CUSTOMER cust;<br /> &nbsp;  int key_cust_c_id = 1;<br /><br /> &nbsp;  cust.c_id = 1;<br /> &nbsp;  strncpy(cust.name, &quot;javer&quot;, 9);<br /> &nbsp;  strncpy(cust.address, &quot;chengdu&quot;, 19);<br /> &nbsp;  cust.age = 32;<br /><br /> &nbsp;  /* 首先创建数据库句柄 */<br /> &nbsp;  ret = db_create(&dbp, NULL, 0);<br /> &nbsp;  print_error(ret);<br /> &nbsp; <br /> &nbsp;  /* 创建数据库标志 */<br /> &nbsp;  flags = DB_CREATE; &nbsp; <br /><br /> &nbsp;  /* 创建一个名为single.db的数据库,使用B+树访问算法,本段代码演示对简单数据类型的处理 */<br /> &nbsp;  ret = dbp-&gt;open(dbp, NULL, &quot;single.db&quot;, NULL, DB_BTREE, flags, 0);<br /> &nbsp;  print_error(ret);<br /><br /> &nbsp;  init_DBT(&key, &data);<br /> &nbsp; <br /> &nbsp;  /* 分别对关键字和数据赋值和规定长度 */<br /> &nbsp;  key.data = fruit;<br /> &nbsp;  key.size = strlen(fruit) + 1;<br /> &nbsp;  data.data = &number;<br /> &nbsp;  data.size = sizeof(int);<br /><br /> &nbsp;  /* 把记录写入数据库中,不允许覆盖关键字相同的记录 */<br /> &nbsp;  ret = dbp-&gt;put(dbp, NULL, &key, &data,DB_NOOVERWRITE);<br /> &nbsp;  print_error(ret);<br /> &nbsp; <br />/* 手动把缓存中的数据刷新到硬盘文件中,实际上在关闭数据库时,数据会被自动刷新 */<br />dbp-&gt;sync();<br /> &nbsp; <br />init_DBT(&key, &data);<br /><br /> &nbsp;  key.data = fruit;<br /> &nbsp;  key.size = strlen(fruit) + 1;<br /> &nbsp; <br /> &nbsp;  /* 从数据库中查询关键字为apple的记录 */<br /> &nbsp;  ret = dbp-&gt;get(dbp, NULL, &key, &data, 0);<br /> &nbsp;  print_error(ret);<br /><br /> &nbsp;  /* 特别要注意数据结构DBT的字段data为void *型,所以在对data赋值和取值时,要做必要的类型转换。 */<br /> &nbsp;  printf(&quot;The number = %d\n&quot;, *(int*)(data.data));<br /> &nbsp; <br /> &nbsp;  if(dbp != NULL)<br /> &nbsp;  &nbsp;  &nbsp;  &nbsp; dbp-&gt;close(dbp, 0);<br /><br /> &nbsp;  ret = db_create(&dbp, NULL, 0);<br /> &nbsp;  print_error(ret);<br /><br /> &nbsp;  flags = DB_CREATE; &nbsp; <br /><br /> &nbsp;  /* 创建一个名为complex.db的数据库,使用HASH访问算法,本段代码演示对复杂数据结构的处理 */<br /> &nbsp;  ret = dbp-&gt;open(dbp, NULL, &quot;complex.db&quot;, NULL, DB_HASH, flags, 0);<br /> &nbsp;  print_error(ret);<br /><br /> &nbsp;  init_DBT(&key, &data);<br /><br /> &nbsp;  key.size = sizeof(int);<br /> &nbsp;  key.data = &(cust.c_id);<br /><br /> &nbsp;  data.size = sizeof(CUSTOMER);<br /> &nbsp;  data.data = &cust;<br /><br /> &nbsp;  ret = dbp-&gt;put(dbp, NULL, &key, &data,DB_NOOVERWRITE);<br /> &nbsp;  print_error(ret);<br /> &nbsp; <br /> &nbsp;  memset(&cust, 0, sizeof(CUSTOMER));<br /> &nbsp; <br /> &nbsp;  key.size = sizeof(int);<br /> &nbsp;  key.data = &key_cust_c_id;<br /><br /> &nbsp;  data.data = &cust;<br /> &nbsp;  data.ulen = sizeof(CUSTOMER);<br /> &nbsp;  data.flags = DB_DBT_USERMEM;<br /><br /> &nbsp;  dbp-&gt;get(dbp, NULL, &key, &data, 0);<br /> &nbsp;  print_error(ret);<br /> &nbsp; <br /> &nbsp;  printf(&quot;c_id = %d name = %s address = %s age = %d\n&quot;,<br /> &nbsp;  &nbsp;   cust.c_id, cust.name, cust.address, cust.age);<br /> &nbsp; <br /> &nbsp;  if(dbp != NULL)<br /> &nbsp;  &nbsp;  &nbsp;  &nbsp; dbp-&gt;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">
&nbsp;</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 />&#46;&#46;/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">
&nbsp;</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 + -