交叉编译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 @   '昵称'undeclared  阅读(456)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示