1) 解压缩db-5.1.19.tar.gz
2) 在解压出来的目录db-5.1.19下新建一个目录build_arm
3) 进入build_arm目录
../dist/configure --prefix=你要安装BDB的目录 --host=arm-linux
make
make install
4) 把make install的bin/ include/ lib/三个目录拷贝到2440开发板文件系统的/usr/local/BerkeleyDB.5.1目录下
5) 把make install的lib/目录下的文件拷贝到2440开发板文件系统的/lib目录下
6) 编写测试代码如下:
#include <db.h>
#include <string.h>
#include <stdlib.h>
#define DATABASE "Embedded_DB.db"
#define GET_DESCRIPTION_SIZE 199
int main( void )
{
DB *dbp; //DB structure handle
u_int32_t flags; //database open flags
int ret_open; //database open function return value
ret_open = db_create( &dbp, NULL, 0 ); //Initialize a DB handle
if( 0 != ret_open ){
fprintf( stderr, "db_create:%s/n", db_strerror(ret_open) );
exit( 1 );
}
flags = DB_CREATE; //If the database does not exist, create it
//Use DB handle's open() method
ret_open = dbp->open( dbp, //DB structure pointer
NULL, //Transaction pointer
DATABASE, //On-disk file that holds the database
NULL, //Optional logical access method
DB_BTREE, //Database access method
flags, //Open flags
0 ); //File mode(using defualts)
if( 0 != ret_open ){
dbp->err( dbp, ret_open, "%s", DATABASE );
exit( 1 );
}
else
printf( "db:%s was created!/n", DATABASE );
//Writting Records to the Database
DBT put_key,put_data;
int ret_put;
//Zero out the DBTs before using them
memset( &put_key, 0, sizeof(DBT) );
memset( &put_data, 0, sizeof(DBT) );
put_key.data = "sport";
put_key.size = sizeof( "sport" );
put_data.data = "basketball,football and baseball";
put_data.size = sizeof( "basketball,football and baseball" ) + 1;
ret_put = dbp->put( dbp, NULL, &put_key, &put_data, DB_NOOVERWRITE );
if( 0 == ret_put )
printf( "db:%s:key was stored./n", (char *)put_key.data );
else
dbp->err( dbp, ret_put, "DB->put()" );
//Getting Records from the Database
DBT get_key,get_data;
int ret_get;
memset( &get_key, 0, sizeof(DBT) );
memset( &get_data, 0, sizeof(DBT) );
get_key.data = "sport";
get_key.size = sizeof( "sport" );
ret_get = dbp->get( dbp, NULL, &get_key, &get_data, 0 );
if( ret_get == 0 )
printf( "db:%s:key was retrieved:data was %s./n", (char *)get_key.data, (char *)get_data.data );
else
dbp->err( dbp, ret_get, "DB->get()" );
//Deleting Records
DBT del_key;
int ret_del;
memset( &del_key, 0, sizeof( DBT ) );
del_key.data = "sport";
del_key.size = sizeof( "sport" );
ret_del = dbp->del( dbp, NULL, &del_key, 0 );
if( ret_del == 0 )
printf( "db:%s:key was deleted./n", (char *)del_key.data );
else
dbp->err( dbp, ret_del, "DB->del()");
//identify the deleting function
ret_get = dbp->get( dbp, NULL, &get_key, &get_data, 0 );
if( ret_get == 0 )
printf( "db:%s:key was retrieved:data was %s./n", (char *)get_key.data, (char *)get_data.data );
else
dbp->err( dbp, ret_get, "DB->get()" );
//Closing Database
int ret_close;
ret_close = dbp->close( dbp, 0 );
#if 1
if( ret_close == 0 )
printf( "db:%s was closed./n", DATABASE );
else
dbp->err( dbp, ret_close, "DB->close()" );
#endif
return 0;
}
7) 编写Makefile如下:
db_main:db_main.c
arm-linux-gcc db_main.c -o db_main -I/home/syl/Berkeley_DB/include -L/home/syl/Berkeley_DB/lib -ldb
clean:
rm *.db db_main