SQLite库笔记:下载编译

SQLite是一个C语言库,它实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引擎。它广泛应用于计算机、手机和嵌入式设备。SQLite源代码在公有领域(public domain),据SQLite官网介绍说可以免费使用,不需要license。

1. 源码包下载

https://www.sqlite.org/download.html

2. 编译

Ubuntu环境,解压源码包,创建build目录用于存放编译产生的文件。

在build目录下,命令行依次执行如下命令以编译SQLite。其中--prefix参数指定了编译产生文件的存放路径为build目录。CC变量也可以指定其它编译工具链,例如arm-linux-gcc。

../sqlite-autoconf-3460000/configure CC=gcc --prefix=/home/ad/data/code/sqlite/build
make
make install

编译成功后,build目录下产生的文件如下图。

其中,include目录下存放SQLite库的.h头文件,lib目录下存放SQLite的静态库和动态库文件。可以通过cp -rf命令将这两个文件夹拷贝到代码工程中使用。

bin目录下存放生成的二进制可执行文件,可以命令行直接./执行。

3. 编译优化

当内存空间有限,希望缩减库文件大小时,可以使用SQLite官网推荐的编译选项(详情见https://www.sqlite.org/compile.html#untestable)。并加上strip操作,去掉符号和调试信息,尽可能缩减库文件大小。示例如下:

CFLAGS="-Os  -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA" ../sqlite-autoconf-3460000/configure CC=gcc STRIP=strip --prefix=/home/ad/data/code/sqlite/build
make
make install-strip

编译参数太长了,可以写个bash脚本来执行这些命令,脚本内容示例:

#!/bin/sh

make clean
REDUCE_AGS="-Os  -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA"

CFLAGS=$REDUCE_AGS ../sqlite-autoconf-3460000/configure CC=gcc STRIP=strip --prefix=$(pwd)  --disable-readline --disable-editline
make
make install-strip

键入chmod +x命令给build.sh增加执行权限, 然后sh或./执行脚本,即可编译SQLite源码包。

来对比一下,优化编译后库文件从27M缩减到了2.4M字节,缩减了91%。

二进制可执行文件从9.3M缩减到1.3M字节,缩减86%。

其中,strip操作贡献了很大的缩减力度,而SQLite编译选项裁剪了大概200KB。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值