?? 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 + -