SQLite数据库移植

发布者:PositiveVibes最新更新时间:2023-05-31 来源: elecfans关键字:SQLite  数据库  移植 手机看文章 扫描二维码
随时随地手机看文章

SQLite是一款轻型的数据库,它遵守ACID的关系型数据库管理系统,包含在一个相对小的C库中。它的设计目标是嵌入式系统,目前已经在很多嵌入式产品中使用,其占用资源非常低,在嵌入式设备中,只需要几百K的内存就够了。SQLite能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还具有ODBC接口,比起MySQL、PostgreSQL这两款开源的著名数据库管理系统来,它的处理速度比他们都要快。同时,SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是一个零配置的数据库,这意味着与其他数据库不一样,它不需要在系统中配置。

下面就来讨论一下,如何把SQLite移植到嵌入式Linux系统中。以下是在S3C2416嵌入式开发板上(Linux3.6.6内核)移植SQLite3.33.0的具体步骤。 

1、通过官网(https://www.sqlite.org/2020/sqlite-autoconf-3330000.tar.gz)或其他网站下载SQLite3.33.0的源码,本例下载的压缩包名为sqlite-autoconf-3330000.tar.gz(注意一定要下载自动配置的autoconf版本)。
2、执行命令“tar -zxvf sqlite-autoconf-3330000.tar.gz -C /tmp”,把源码解压到“/tmp”目录下。
3、进入解压好的源码目录,然后执行命令“./configure --prefix=/opt/SQLite3 --target=arm-linux --host=arm-linux LD=arm-linux-ld”,对源码进行配置,安装路径配置为“/opt/SQLite3”。
4、配置完成后执行命令“make”对源码进行编译。
5、编译完成后执行命令“make install”进行本地安装。
6、安装完成后执行“cd /opt/SQLite3”进入安装目录,可发现编译好的SQLite3.33.0就安装在该目录下,会有bin、include、lib和share等4个目录。
7、拷贝bin目录下生成的可执行文件sqlite3到嵌入式开发板上的“/usr/bin”目录下。
8、拷贝lib目录下以libsqlite3.so开头的库文件到嵌入式开发板上的“/usr/lib”目录下,拷贝时注意要保持原有的链接(cp命令加参数“-d”)。
9、在开发板上执行sqlite3即可启动sqlite3.33.0了,如下图所示。

退出SQLite用命令“.exit”(或“.quit”)。 

下面来测试一下,先建立一个名为test.db的数据库文件,然后再向里面写入两条数据,具体如下图所示。

接下来编写一个C程序来读取上面建立的test.db数据库及表,代码如下。

#include
#include
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for(i=0; i
printf("%s = %sn", azColName[i], argv[i]?argv[i]:"NULL");
printf("n");
return 0;
}
int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if(argc != 3)
{
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENTn", argv[0]);
return 1;
}
rc = sqlite3_open(argv[1], &db);
if(rc)
{
fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if(rc != SQLITE_OK)
{
fprintf(stderr, "SQL error: %sn", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}

把上述代码存为一个名为SQLitetest.c的程序文件,然后进行交叉编译。 由于在编译时要用到SQLite中的库文件和头文件,所以需要在编译时加下库文件和头文件所在的路径。

执行“arm-linux-gcc SQLitetest.c -o SQLitetest -I /opt/SQLite3/include -L /opt/SQLite3/lib -l sqite3”进行交叉编译,其中的库文件和头文件路径为前面编译安装SQLite3时的路径。完成后会生成可执行文件SQLitetest,然后把它拷贝到嵌入式开发板上。

在嵌入式开发板上执行./SQLitetest /test.db "select * from tbl",就可以看到程序读取数据库的效果了,如下图所示。

 

至此,证明SQLite3数据库移植成功!


关键字:SQLite  数据库  移植 引用地址:SQLite数据库移植

上一篇:alsa-lib及alsa-utils成功移植
下一篇:从GPS/北斗模块中获取经纬度

推荐阅读最新更新时间:2024-11-17 23:13

μC/OS-II在LPC213X上的多种移植方案
μC/OS-II是可移植、适用于对安全性要求苛刻的剥夺型实时多任务嵌入式系统,简单易学,在工程应用和嵌入式系统教学中很受欢迎。LPC213X是Philips公司推出的基于ARM7TDMI-S核的32位RISC微处理器,也适合于ARM学习开发平台和工程应用。 1 与μC/OS-II移植工作相关的主要特性 ARM体系结构分为7种运行模式,ARM和Thumb两种工作状态。LPC213X的编程模型就是标准的ARM7体系结构;同时LPC213X也具备ARM的标准异常模式IRQ和FIQ。稍具特色的是其VIC向量中断控制器。分别对IRQ、FIQ、非向量中断和软件中断进行了分类,具有对32个中断输入的可编程分配机制。这对于μC/OS-II的移植
[嵌入式]
u-boot移植(九)---代码修改---NAND
一、NAND原理      NAND 无地址空间,地址和数据的发送都依赖于LDATA 这一串数据总线。      不看随机页编程,看到从高位到低位的页,总共分为64个页面,每个页的组成是2K + 64 个byte,一个块的大小是(128K + 4K)byte,64页组成一块。 1.1 NAND Flash的编址   nand flash的的页的大小是(2048 + 64)byte,64这个数据是不参与编址的。   访问 nand flash: 发出命令:读、写、擦除 发出地址 传输数据   命令设置如下:    1.2 nand flash的访问      可以看看上面的模式选择,然后对应引脚进行操作,就
[单片机]
u-boot<font color='red'>移植</font>(九)---代码修改---NAND
基于S3C44B0开发板进行Blob的移植操作和步骤
Bootloader是嵌入式系统软件开发的第一个环节,它紧密地将软硬件衔接在一起,对于一个嵌入式设备后续的软件开发至关重要。Blob是一款功能强大的Bootloader,S3C44B0是三星公司一款基于ARM7TDMI的嵌入式通用处理器。本文详细介绍Blob在基于S3C44B0的开发板上的运行原理与移植过程。 Bootloader对于嵌入式设备来说至关重要,它涉及到许多硬件相关的知识。对于自制的嵌入式开发板,它又是不可跳过的步骤,所以很多人对于它感到很头痛。本文将以一款优秀的Bootloader Blob为例,详细讲解它的运行原理以及在S3C44B0通用处理器上的移植过程,为在嵌入式设备上的后续软件开发打下基础。 1 Bl
[单片机]
基于S3C44B0开发板进行Blob的<font color='red'>移植</font>操作和步骤
成功移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 在开始之前,我们需要确认有 SQLite3源码包; 有交叉编译环境; 有一块开发板; 1、下载 SQLite3源码 地址: http://www.sqlite.or
[单片机]
成功<font color='red'>移植</font><font color='red'>SQLite</font>3到ARM Linux开发板
基于Labwindows/CVI的测试系统数据库设计
    数据库实际上就是存储数据的“仓库”。但数据不是存放在容器或空间中,而是存放在计算机的外存储器上(如磁盘),并且是有组织的存放。数据的管理和利用通常是通过计算机的数据管理软件——数据库管理系统来完成的。因此,数据库不单是指存有数据的计算机外存,而是指存放在外存上的数据集合及其管理软件的总和,通常称为数据库系统。在以LabWindows/CVI为虚拟仪器软件开发环境进行自动测试系统的开发中,需要大量的数据处理。以前对数据的处理基本都是通过文件的形式,但是文件形式的数据不易管理和查询,因此迫切需要将测试结果以及配置信息和数据存放在数据库中。自从NI公司开发出数据库系统应用软件工具包后,就可以在Lab-Windows/CVI环境下
[嵌入式]
如何才能移植一个AC6例子到STM32CubeIDE
本附录中使用的示例是DataLogTerminal,位于:STM32CubeExpansion_MEMS1_V7.1.0ProjectsSTM32L476RG-NucleoExamplesIKS01A2DataLogTerminal 信息 STM32CubeExpansion_MEMS1_V7.1.0 是X-CUBE-MEMS的摘录。随着时间的推移,可能会从同一链接获得此软件包的更新版本。 警告 建议把包放在C:下,以免后面编译出错(因为路径太长) 2.1硬件说明↑ X-NUCLEO-IKS01A2 [3]是一款用于 STM32 64 引脚 Nucleo 的运动 MEMS 和环境传感器扩展板。它通过 I²C 总线引脚与 N
[单片机]
如何才能<font color='red'>移植</font>一个AC6例子到STM32CubeIDE
基于STM32MP157的Linux操作系统移植 —Trusted Firmware-A移植
嵌入式高速发展的今天,大量的嵌入式设备使用了arm为核心的芯片。我们会接触到越来越多的嵌入式设备,一个问题油然而生:数量如此巨大的嵌入式设备的安全性如何?目前针对嵌入式安全的技术和标准可谓千姿百态,除了必要的硬件安全技术,与之配套的安全软件也是必不可少的一部分。我们今天要介绍的是基于arm的可信固件Trusted Firmware-A,简称TF-A。它是一个开源软件,运行在一个硬件隔离的安全环境中并提供安全服务。 实验目的 完成TF-A的基本功能实现TF-A引导u-boot启动。 实验平台 华清远见开发环境,FS-MP1A平台 实验步骤 本实验基于tf-a-stm32mp-2.2版本,然后添加意法半导体提供的补丁文件。 导入代
[单片机]
s3c2440 ads程序移植到keil中(一) 初步完成
1 与其他工程一直一样 直接加入工程进行编译 2440init.s(8): error: A1023E: File option.inc could not be opened: 等错误 直接把option.inc Memcfg.inc 2440addr.inc 直接放在2440init.s的目录中 然后编译 当前记过错误消失 出现 .led.axf: Error: L6238E: 2440init.o(Init) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte aligment o
[单片机]
s3c2440 ads程序<font color='red'>移植</font>到keil中(一) 初步完成
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved