交叉编译SQLite3

交叉编译SQLite3

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL 数据库引擎。 它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。 SQLite 直接访问其存储文件。
SQLite是一个轻量级的库,且用C语言实现,它的数据库就是一个文件,这说明它非常适合使用在小型的嵌入式设备。

SQLite3

1、先编译SQLite3,先到SQLite的官网
https://www.sqlite.org/download.html
找到sqlite-src-3360000.zip下载并解压
然后configure

./configure CC=arm-linux-gnu-gcc --host=arm-linux --prefix=/tmp/lib
make && sudo make install
cd /tmp/lib
ls
#返回 bin  include  lib

然后把bin里面的sqlite3拷贝到设备的/bin目录下,运行

$ sqlite3 database.db
sqlite3: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

提示需要zlib的库,看来SQLite依赖zlib运行

libz和zlib是同一个东西都是表示名称叫z的库,以下不做解释

zlib

先到zlib的官网
https://zlib.net/
下载tar.gz的源码包
然后解压
这个要这么configure,不要问,问就是踩过坑

$ export CC=arm-linux-gnu-gcc
$ ./configure --prefix=/tmp/lib
$ make && sudo make install
$ cd /tmp/lib/lib
$ ls
libsqlite3.a  libsqlite3.la  libz.a  libz.so  libz.so.1  libz.so.1.2.11  pkgconfig

然后把所有libz的库拷到板子的/lib目录下
libz.a libz.so libz.so.1 libz.so.1.2.11
然后再运行sqlite3就可以运行了

简单尝试

SQL一般以.(点)开头以;表示结束
运行

# sqlite3 test.db
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite> create table test (id int primary key,name char, age int);
sqlite> select *from test;
sqlite> insert into test values (1, 'zhangsan', 18);
sqlite> select *from test;
0|zhangsan|18
sqlite> .exit

简单解释
create table test创建一个表,起名为test
insert into test values (1, 'zhangsan', 18);录入一个行,name为zhangsan,age为18
select *from test;选择test里面的所有匹配项
.exit退出SQLite3应用
具体的SQLite3可以看网上有很多的SQL的教程。

posted @ 2021-10-19 20:33  '昵称'undeclared  阅读(439)  评论(0编辑  收藏  举报