SQLite是一款针对嵌入式产品应用的轻量型开源数据库,它占用资源非常的低。在嵌入式应用中,该数据库只需要几百K的内存就够了,而且性能非常不错。除此外,它也支持Windows/Linux/Unix等主流的操作系统。
实际上,早就对SQLite垂暮已久了,奈何一直用不上。最近项目里,打算对小范围的数据(如黑名单数据)上SQLite进行管理。
一、SQLite版本选择和下载
当前广泛使用的版本是SQLite3。SQLite3也有很多版本,那哪个版本更可靠更稳定呢?这是我的第一个问题。
国网TCU程序有用到SQLite,本来想用它使用的版本,但是手上的TCU查不到它所用哪个版本。搜索了一圈,没有找到相关信息。所以暂时选择了当前最新版本3.20.0。
SQLite官网:http://www.sqlite.org/index.html
在官网上,可下载最新和历史发布的SQLite源码。
对于移植,根据网上经验,一般选择下载autoconf版本的源码包。如下图所示。
对于下载历史发布的autoconf版本的源码包,在官网上很难直接找到下载链接。我使用的方法如下:
1. 当前最新autoconf版本源码包的下载链接为:http://www.sqlite.org/2017/sqlite-autoconf-3200000.tar.gz
2. 根据这个链接地址的格式,我们很容易找到历史发布源码包的链接地址。
比如,要下载3.16.2版本的SQLite,它的下载链接应该为:
http://www.sqlite.org/2017/sqlite-autoconf-3160200.tar.gz
经验证,这个方法是有效的。
二、SQLite移植
SQLite的移植比较简单。
1. 下载autoconf版本源码包后,进行解压
tar -zxvf sqlite-autoconf-3200000.tar.gz
cd sqlite-autoconf-3200000/
2. 进入该源码目录,新建一个文件夹,用于存放生成的可执行文件和lib库文件
新建的文件夹,建议不要命名为install,因为使用samba共享时,因与INSTALL文件重名,导致在window系统进入该samba共享时,识别不出该文件夹。
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ mkdir output
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ chmod 777 -R output/
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ cd output/
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000/output$
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000/output$ pwd
/home/reille/zrn_work/sqlite/sqlite-autoconf-3200000/output
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000/output$
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000/output$ cd ../
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$
3. 配置SQLite
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ ./configure –prefix=/home/reille/zrn_work/sqlite/sqlite-autoconf-3200000/output –host=arm-linux CC=/usr/local/arm-uclibc/bin/arm-uclibc-gcc
- CC赋值为嵌入式开发环境所使用的交叉编译工具,后面接自己交叉编译器的路径
- –host:指定交叉编译工具,一般为arm-linux、arm-linux-gnueabihf、arm-none-linux-gnueabi等,具体要和板子用的交叉编译工具对应
- –prefix:指定安装目录,编译后的文件会全部放在安装目录中。必须是绝对路径。这里指向了刚才新建的output文件夹
4. make; make install
编译生成:
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ make ; make install
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000$ cd output/
reille@ubuntu:~/zrn_work/sqlite/sqlite-autoconf-3200000/output$ ls
bin include lib share
5. 验证测试
把bin目录下编译的sqlite传到目标上,运行测试: