嵌入式数据库hamsterdb的android编译工程文件

发布: 2012-04-24 22:22

hamsterdb是一个采用C开发,非常快,轻量级的嵌入式数据库引擎。

hamsterdb 包括的B +树变长密钥和记录。它支持内存中的数据库和字节独立的文件,数据库,游标,多个数据库在一个文件中, “记录”数据库,重复键。 hamsterdb是非常快速和高度可配置的。汇编和Unix平台上运行, Linux ,微软Windows ,和Windows CE 。

嵌入式数据库 hamsterdb 2.x 正式版发布,该版本包含一个完全重新实现的事务处理,可支持无限制的并发事务处理数,集成 Java 和 .NET 的 客户端访问 API。

由于在android项目中要使用,编写了一上使用android NDK编译hamsterdb的工程文件,还比较通用,发布出来,供开发者参考:
项目中使用的是最新版本的hamsterdb-2.0.1

在编译过程中,遇到一个basename函数找不到的问题,需要修改两个文件,添加一行
#include

需要修改的文件是src/log.cc和src/journal.cc

工程文件有两个,Application.mk和Android.mk,放在android项目的jni目录,使用android-build命令编译。

文件一:
[gzleo@myhost jni]$ more Application.mk
[code type='bash']
# The ARMv7 is significanly faster due to the use of the hardware FPU
# APP_ABI := armeabi armeabi-v7a
APP_ABI := armeabi
APP_PLATFORM := android-9
APP_MODULES := hello-jni hamsterdb

APP_STL := stlport_static # gnustl_static # stlport_static
[/code]

文件二:
[gzleo@myhost jni]$ more Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# the ./ path is PROJECT/jni/
HAMDB_ROOT := ./../hamsterdb-2.0.1
HAMDB_3RD := $(HAMDB_ROOT)/3rdparty
HAMDB_SRC := $(HAMDB_ROOT)/src
LOCAL_MODULE := hamsterdb

AES_SRC_FILES := $(HAMDB_3RD)/aes/aes.c
ZLIB_SRC_FILES := $(HAMDB_3RD)/zlib/adler32.c \
$(HAMDB_3RD)/zlib/compress.c \
$(HAMDB_3RD)/zlib/crc32.c \
$(HAMDB_3RD)/zlib/gzio.c \
$(HAMDB_3RD)/zlib/uncompr.c \
$(HAMDB_3RD)/zlib/deflate.c \
$(HAMDB_3RD)/zlib/trees.c \
$(HAMDB_3RD)/zlib/zutil.c \
$(HAMDB_3RD)/zlib/inflate.c \
$(HAMDB_3RD)/zlib/infback.c \
$(HAMDB_3RD)/zlib/inftrees.c \
$(HAMDB_3RD)/zlib/inffast.c


LOCAL_CPP_EXTENSION := .cxx .cpp .cc
HAMDB_SRC_FILES := $(HAMDB_SRC)/log.cc \
$(HAMDB_SRC)/blob.cc \
$(HAMDB_SRC)/btree.cc \
$(HAMDB_SRC)/btree_check.cc \
$(HAMDB_SRC)/btree_cursor.cc \
$(HAMDB_SRC)/btree_enum.cc \
$(HAMDB_SRC)/btree_erase.cc \
$(HAMDB_SRC)/btree_find.cc \
$(HAMDB_SRC)/btree_insert.cc \
$(HAMDB_SRC)/btree_key.cc \
$(HAMDB_SRC)/btree_stats.cc \
$(HAMDB_SRC)/cache.cc \
$(HAMDB_SRC)/changeset.cc \
$(HAMDB_SRC)/cursor.cc \
$(HAMDB_SRC)/db.cc \
$(HAMDB_SRC)/device.cc \
$(HAMDB_SRC)/env.cc \
$(HAMDB_SRC)/error.cc \
$(HAMDB_SRC)/extkeys.cc \
$(HAMDB_SRC)/freelist.cc \
$(HAMDB_SRC)/freelist_statistics.cc \
$(HAMDB_SRC)/freelist_v2.cc \
$(HAMDB_SRC)/hamsterdb.cc \
$(HAMDB_SRC)/journal.cc \
$(HAMDB_SRC)/mem.cc \
$(HAMDB_SRC)/os_posix.cc \
$(HAMDB_SRC)/page.cc \
$(HAMDB_SRC)/remote.cc \
$(HAMDB_SRC)/txn.cc \
$(HAMDB_SRC)/txn_cursor.cc \
$(HAMDB_SRC)/util.cc


# $(ZLIB_SRC_FILES)
LOCAL_SRC_FILES := $(AES_SRC_FILES) $(HAMDB_SRC_FILES)

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../include $(LOCAL_PATH)/$(HAMDB_ROOT)/include $(LOCAL_PATH)
/../../platforms/android-9/arch-arm/usr/include/ /opt/android-ndk/sources/cxx-stl/stlport/stlpo
rt/
LOCAL_CFLAGS += $(LOCAL_C_INCLUDES:%=-I%) -DHAM_LITTLE_ENDIAN -DHAM_ENABLE_COMPRESSION -DHAM_EN
ABLE_ENCRYPTION -DHAVE_WRITEV -D__ssize_t_defined -D_STLP_USE_SIMPLE_NODE_ALLOC -D_STLP_USE_NEW
ALLOC -D_STLP_NO_EXCEPTIONS
# LOCAL_CFLAGS += $(LOCAL_C_INCLUDES:%=-I%) -DHAM_LITTLE_ENDIAN -DHAM_DISABLE_COMPRESSION -DHAM
_DISABLE_ENCRYPTION
LOCAL_LDLIBS := -lz -lstlport_static -L/opt/android-ndk/sources/cxx-stl/stlport/libs/armeabi/ -
lstdc++ -lsupc++ -L/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/libs/armeabi/ /opt/android-nd
k/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a
LOCAL_CPP_FEATURES := #rtti # exceptions # rtti
#LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

include $(BUILD_SHARED_LIBRARY)
################################



原文: http://qtchina.tk/?q=node/652

Powered by zexport