一、首先到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
好了,最后代码编译成功。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【在fedora里面安装BerkeleyDB数据库】(https://www.iteblog.com/archives/179.html)