嵌入式linux下sqlite应用

2019-07-12 14:59发布

《一、嵌入式sqlite库的移植》  FM001 Sqlite3动态库移植模块设计
  1. 功能描述
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件  
  1. 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  2. SQLite 不需要配置,这意味着不需要安装或管理。
  3. 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  4. SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KB。
  5. SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  6. SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  7. SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  8. SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  9. SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行,可以直接将监控记录的****.db拿出来在Linux或者Windows上打开、解析。
  1. 设计意图和实现方法说明
Sqlite移植方法如下:  
  • sqlite3库的下载
Sqlite3下载:http://www.sqlite.org/download.html下载linux版本的源码
  • Sqlite3的交叉编译
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  
  • sqlite3库的运行链接
程序运行所需要的依赖库一般在系统目录下的/lib,此次项目由于不涉及BSP 的更改, 最终的sqlite3库就不能放置在/lib目录下,通过linux全局变量,指定链接库路径方式调用。 在startapp 中加入pcap库路径: LD_LIBRARY_PATH=/app/lib:$LD_LIBRARY_PATH
  • sqlite3库常用C接口介绍
打开数据库:Sqlite3_Open 创建表:Sqlite3_CreateTable 执行数据库语句:sqlite3_exec 写二进制: { 准备插入语句:sqlite3_prepare() 绑定二进制结构体参数:sqlite3_bind_blob 执行:sqlite3_step }