交叉编译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的教程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话