如何裁减SQLITE3(嵌入式数据库) 2018-12-28 10:13:34

1. 获取原始源代码 (canonical sources, 而非 amalgamation sources)

从地址 https://www.sqlite.org/2015/sqlite-src-3081101.zip 下载,或到官网下载。

2. 解压源代码并进入解压后的目录:

unzip sqlite-src-3081101.zip
cd sqlite-src-3081101

3. 配置编译选项(以MIPS交叉编译为例)

CC=/projects/hnd/tools/linux/hndtools-mips-linux-uclibc-4.9.3/usr/bin/mips-ugw-linux-uclibc-gcc \
LD=/projects/hnd/tools/linux/hndtools-mips-linux-uclibc-4.9.3/usr/bin/mips-ugw-linux-uclibc-ld \
AR=/projects/hnd/tools/linux/hndtools-mips-linux-uclibc-4.9.3/usr/bin/mips-ugw-linux-uclibc-ar \
./configure --disable-tcl --host=mips-linux --target=mips-linux

4. 编辑 Makefile 文件

修改 OPT_FEATURE_FLAGS 的值, 添加需要裁减的宏 SQLITE_OMIT_*(参看这里),例如:

OPT_FEATURE_FLAGS += -DSQLITE_OMIT_DECLTYPE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_DEPRECATED
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_ANALYZE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_ATTACH
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_AUTHORIZATION
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_BUILTIN_TEST
OPT_FEATURE_FLAGS += -DSQLITE_UNTESTABLE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_COMPILEOPTION_DIAGS
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_FOREIGN_KEY
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_EXPLAIN
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_LOAD_EXTENSION
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_TCL_VARIABLE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_TEMPDB
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_TRACE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_TRIGGER
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_UTF16
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_VACUUM
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_VIRTUALTABLE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_SHARED_CACHE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_AUTOVACUUM
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_BETWEEN_OPTIMIZATION
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_BLOB_LITERAL
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_CAST
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_CHECK
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_CTE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_FLAG_PRAGMAS
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_GET_TABLE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_INCRBLOB
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_LIKE_OPTIMIZATION
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_LOCALTIME
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_LOOKASIDE
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_MEMORYDB
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_OR_OPTIMIZATION
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_PROGRESS_CALLBACK
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_REINDEX
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_SUBQUERY
OPT_FEATURE_FLAGS += -DSQLITE_OMIT_VIEW

5. 生成 amalgamation sources (sqlite3.c/sqlite3.h/sqlite3ext.h/shell.c)

make sqlite3.c

6. 此时在当前目录已经生成 sqlite3.c/sqlite3.h/sqlite3ext.h/shell.c

把这些文件拷贝到编译环境编译即可(跟amalgamation sources的编译方式相同):

cp sqlite3.c sqlite3.h sqlite3ext.h shell.c  somewhere




创建于 2018-12-24 14:57:19
最后更新于 2018-12-28 10:13:34
昵称 密钥