ARM Linux 开发板上安装 SQLite 的两种方式。
方法一:使用包管理器安装(推荐)
如果开发板运行的是 Debian/Ubuntu 等支持 apt 的系统:
# 1. 更新软件包列表
sudo apt update
# 2. 安装 SQLite3 命令行工具
sudo apt install sqlite3
# 3. 安装开发库(头文件和静态库)
sudo apt install libsqlite3-dev
# 4. 验证安装
sqlite3 --version
# 应显示类似:3.37.2 2022-01-06 13:25:41 ...
root@lubancat:~# sqlite3 --version
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
测试指令
检查项 | 命令/操作 | 安装成功的标志 |
---|---|---|
命令行工具 | sqlite3 --version | 输出版本号(如 3.37.0 ) |
动态库文件 | find /lib -name "*sqlite3*" | 找到 libsqlite3.so.x.x.x |
头文件 | find /usr -name "sqlite3.h" | 返回头文件路径 |
编译链接测试 | gcc test.c -lsqlite3 | 生成可执行文件且无报错 |
方法二:手动交叉编译安装(通用方法)
步骤 1:在主机上准备
当开发板不支持 apt 或需要特定版本时:
SQlite 官网:地址
https://www.sqlite.org/index.html
源码下载地址:链接
https://www.sqlite.org/download.html
等待下载完成
# 安装交叉编译工具链(示例为 ARMv7)
sudo apt install gcc-arm-linux-gnueabihf
# 解压 SQLite 源码
tar xvf sqlite-autoconf-*.tar.gz
cd sqlite-autoconf-*
解压,进入解压后的文件夹。
步骤 2:配置和交叉编译
配置工具链
# 配置编译选项
./configure \
--host=arm-linux-gnueabihf \
--prefix=/usr/local/sqlite-arm \
--enable-shared \
--enable-static
# 编译并安装到临时目录
# 编译
make -j$(nproc)
# 安装到临时目录
make install DESTDIR=$(pwd)/install
配置选项指令
./configure --host=arm-linux --prefix=/home/user/Desktop/sqlite3/install --enable-shared --enable-static
等待完成
编译
make
or
make make -j$(nproc)
安装到配置选项指定位置
make install
指定位置
安装到临时目录
make install DESTDIR=$(pwd)/install
会在当前文件下创建install
文件夹,并安装到此位置
查看文件
参数解释
配置编译选项
-
--host=arm-linux-gnueabihf
- 此参数表明编译生成的程序将在 ARM 架构的系统上运行。这里的目标系统采用 ARM 32 位架构,使用硬浮点(HF)ABI,并且基于 GNU/Linux 系统。
-
--prefix=/usr/local/sqlite-arm
- 该参数设定了软件的安装路径。当执行
make install
命令时,程序会被安装到/usr/local/sqlite-arm
目录下。注意如果使用了DESTDIR
变量,实际的安装路径会有所不同。
- 该参数设定了软件的安装路径。当执行
-
--enable-shared
- 此选项用于开启共享库(动态链接库)的编译。共享库可以被多个程序共享使用,从而减少内存的占用。
-
--enable-static
- 该选项用于开启静态库的编译。静态库会被直接链接到程序中,使程序在运行时无需依赖外部的库文件。
编译与安装命令
# 编译并安装到临时目录
make -j$(nproc)
make install DESTDIR=$(pwd)/install
-
make -j$(nproc)
make
命令的作用是依据 Makefile 来编译软件。-j$(nproc)
中的$(nproc)
会返回系统的 CPU 核心数,-j
选项则让make
命令能够并行执行多个任务,从而加快编译的速度。
-
make install DESTDIR=$(pwd)/install
make install
命令会将编译好的文件安装到指定的位置。DESTDIR=$(pwd)/install
这一参数会临时改变安装的根目录。原本应该安装到/usr/local/sqlite-arm
目录下的文件,会被安装到当前目录下的install/usr/local/sqlite-arm
目录中。这种做法常用于创建软件包或者进行交叉编译,能够避免污染本地的系统环境。
将编译结果安装到一个临时目录中。最终,在当前目录的 install/usr/local/sqlite-arm
目录下会生成以下内容:
- 共享库文件(例如
.so
文件) - 静态库文件(例如
.a
文件) - 头文件
- 工具程序
静态和动态文件
头文件
步骤 3:部署到开发板
3.1 方式一
将 lib 目录下的库文件拷贝到开发板的/lib/目录
下,设置权限
全部拷贝
开发板
如果没有这2个软链接,可手动创建。
软链接
指令
ln -s 目标文件 软连接名称
设置权限
将bin 目录下的sqlite3
拷贝到开发板的/bin/目录
下,并设置权限
设置权限
3.2 方式二
# 复制文件到开发板(替换 IP)
scp -r install/usr/local/sqlite-arm/* root@<开发板IP>:/usr/local/
# 在开发板上设置环境变量
# 修改用户的 bash 配置文件,实现了 SQLite 工具路径和库路径的永久设置,并且利用source命令让设置在当前会话中马上生效。
#设置工具路径
echo 'export PATH=/usr/local/sqlite-arm/bin:$PATH' >> ~/.bashrc
#设置动态链接库的搜索路径,程序在运行时会依据这个路径去查找所需的共享库文件
echo 'export LD_LIBRARY_PATH=/usr/local/sqlite-arm/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
#添加的环境变量在当前终端 session 中立即生效
source ~/.bashrc
环境变量配置详细说明
echo 'export PATH=/usr/local/sqlite-arm/bin:$PATH' >> ~/.bashrc
这行代码的作用是把SQLite工具的路径添加到系统的命令搜索路径里。
export PATH=...
:此操作是在定义一个名为PATH
的环境变量,当你输入命令时,系统会按照这个变量里的路径顺序去查找对应的可执行文件。/usr/local/sqlite-arm/bin
:这里存放着ARM架构的SQLite命令行工具。:$PATH
:这部分保证了在添加新路径的同时,原来PATH
变量中的内容不会被覆盖,让系统能够继续找到其他已有的命令。>> ~/.bashrc
:>>
表示以追加的方式把内容添加到文件中,~/.bashrc
是用户的bash配置文件,这样设置后,每次启动终端时这个环境变量都会被自动加载。
echo 'export LD_LIBRARY_PATH=/usr/local/sqlite-arm/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
这行代码的目的是告诉系统去哪里寻找SQLite的动态链接库。
export LD_LIBRARY_PATH=...
:LD_LIBRARY_PATH
是专门用于动态链接库的搜索路径,程序在运行时会依据这个路径去查找所需的共享库文件。/usr/local/sqlite-arm/lib
:该目录包含了ARM架构的SQLite动态链接库。:$LD_LIBRARY_PATH
:同样是为了保留原来的库搜索路径,防止出现其他依赖库找不到的情况。>> ~/.bashrc
:和上面一样,把这个环境变量的设置添加到用户的bash配置文件中,实现开机自动加载。
source ~/.bashrc
这行代码的作用是让刚刚添加的环境变量在当前终端 session 中立即生效。
source
命令能够重新加载指定的配置文件,这样就不用重新启动终端或者登录系统。如果没有这一步,新设置的环境变量只有在下次启动终端时才会生效。
远程复制安装文件到开发板指定文件
设置环境变量
echo 'export PATH=$PATH:/root/sqlite3/install/bin' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/sqlite3/install/lib' >> ~/.bashrc
source ~/.bashrc
设置文件的权限
验证安装(在开发板上执行)
# 检查命令行工具
sqlite3 --version
# 检查库文件
ls /root/sqlite3/install/lib/*sqlite3.so*
# 检查头文件
ls /root/sqlite3/install/include/sqlite3.h
# 简单功能测试
sqlite3 test.db "CREATE TABLE test(id INT); INSERT INTO test VALUES(1); SELECT * FROM test;"
版本
库文件和头文件
测试
常见问题解决
-
缺少依赖错误:
sudo apt install build-essential libtool automake
-
运行时找不到库:
# 永久解决:编辑 /etc/ld.so.conf.d/sqlite.conf echo "/usr/local/sqlite-arm/lib" | sudo tee /etc/ld.so.conf.d/sqlite.conf sudo ldconfig # 临时解决 export LD_LIBRARY_PATH=/usr/local/sqlite-arm/lib:$LD_LIBRARY_PATH
-
空间不足处理:
- 编译时添加
--disable-tcl
减少组件 - 使用
make clean
后只复制bin/sqlite3
和lib/libsqlite3.so*
- 编译时添加
如果空间紧张,可考虑使用 SQLite 精简版 或禁用非必要功能(如 JSON/RTREE 扩展)。
https://www.sqlite.org/amalgamation.html