《一、嵌入式sqlite库的移植》
FM001 Sqlite3动态库移植模块设计
- 功能描述
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件
- 不需要一个单独的服务器进程或操作的系统(无服务器的)。
- SQLite 不需要配置,这意味着不需要安装或管理。
- 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
- SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KB。
- SQLite 是自给自足的,这意味着不需要任何外部的依赖。
- SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
- SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
- SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
- SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行,可以直接将监控记录的****.db拿出来在Linux或者Windows上打开、解析。
- 设计意图和实现方法说明
Sqlite移植方法如下:
Sqlite3下载:
http://www.sqlite.org/download.html下载linux版本的源码
Configure
执行configure,指定交叉编译链,生成编译所需要的Makefile
进入src目录,./configure CC=arm-wrs-linux-gnueabi-armv5tel-glibc_small-gcc --host=arm-wrs-linux-gnueabi --prefix=/usr/tmp/sqlite3/
Make && make install
在src目录下执行make 生成 libsqlite3.so.0.8.6
Strip
编译出来的库文件比较大,BSP可能没有足够的空间,使用strip用来去除目标文件中的一些符号表、调试符号表信息,以减小程序的大小,libsqlite3由2840k减少到840K
【Linux】$ arm-wrs-linux-gnueabi-strip libsqlite3.so.0.8.6
程序运行所需要的依赖库一般在系统目录下的/lib,此次项目由于不涉及BSP 的更改,
最终的sqlite3库就不能放置在/lib目录下,通过linux全局变量,指定链接库路径方式调用。
在startapp 中加入pcap库路径:
LD_LIBRARY_PATH=/app/lib:$LD_LIBRARY_PATH
打开数据库:Sqlite3_Open
创建表:Sqlite3_CreateTable
执行数据库语句:sqlite3_exec
写二进制:
{
准备插入语句:sqlite3_prepare()
绑定二进制结构体参数:sqlite3_bind_blob
执行:sqlite3_step
}