一、首先到Oracle的官網下載Berkeley db資料庫源檔案
http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz
二、下載之後的檔案是一個打包好的檔案,需要在命令列裡面利用tar來解壓(當然你也可以利用一些視覺化檢視來解壓),步驟如下
在命令列裡面輸入 tar -zxvf db-5.3.15.tar.gz
解壓之後進入db-5.3.15目錄有以下檔案及檔案夾
進入build_unix目錄
cd build_unix
之後運行../dist/configure
configure工具檢查環境之後,併產生編譯器所需要的檔案,當它成功運行之後,接著在命令列裡面輸入
make
當編譯結束之後,你需要運行“make install(需要root許可權)”,之後庫檔案和所需要的開發檔案將會安裝到你的系統中去。
這時安裝好的檔案將會預設放在系統的/usr/local/BerkeleyDB.5.3目錄裡面,為了能夠在編程環境中利用它,你需要在/etc/ld.so.conf檔案中加入/usr/local/BerkeleyDB.5.3/lib,這樣你的程式才能正確找到這個庫檔案,最後運行ldconfig命令更新你的系統。好了,現在你就可以編寫DB資料庫代碼了。
- #include <stdio.h>
- #include <db.h>
- #include<string.h>
- #define DATABASE "employees.db"
-
- int main()
- {
- DBT key, data;
- DB *dbp;
- int ret;
- struct data_struct {
- int empid;
- char lastname[50];
- char firstname[50];
- float salary;
- } emp;
-
- ret = db_create(&dbp, NULL, 0);
- if (ret != 0)
- {
- perror("create");
- return 1;
- }
-
- ret = dbp->open(dbp, NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0);
- if (ret != 0)
- {
- perror("open: ");
- return 1;
- }
-
- while(1)
- {
- printf("Enter Employee ID: ");
- scanf("%d", &emp.empid);
- if (emp.empid == 0)
- break;
- printf("Enter Last name: ");
- scanf("%s", &emp.lastname);
- printf("Enter First name: ");
- scanf("%s", &emp.firstname);
- printf("Enter Salary: ");
- scanf("%f", &emp.salary);
-
- memset(&key, 0, sizeof(DBT));
- memset(&data, 0, sizeof(DBT));
-
- key.data = &(emp.empid);
- key.size = sizeof(emp.empid);
- data.data = &emp;
- data.size = sizeof(emp);
-
- ret = dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);
- if (ret != 0)
- {
- printf("Employee ID exists\n");
- }
- }
-
- dbp->close(dbp, 0);
- return 0;
- }
編譯代碼
gcc -I/usr/local/BerkeleyDB.5.3/include -o newemployee newemployee.c -L/usr/local/BerkeleyDB.5.3 -ldb
按照上面的編譯將會出現一個錯誤
/usr/bin/ld: cannot find -ldb
collect2: ld 返回 1
這時在命令列裡面輸入下面的語言問題就可以解決
ln -s /usr/local/BerkeleyDB.5.3/lib/libdb.so /usr/lib/libdb.so
再編譯
gcc -I/usr/local/BerkeleyDB.5.3/include -o newemployee newemployee.c -L/usr/local/BerkeleyDB.5.3 -ldb
好了,最後代碼編譯成功。