手把手教--Arm Linux 开发板数据库 Sqlite3 的移植

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文件夹,并安装到此位置
在这里插入图片描述
查看文件
在这里插入图片描述

参数解释

配置编译选项

  1. --host=arm-linux-gnueabihf

    • 此参数表明编译生成的程序将在 ARM 架构的系统上运行。这里的目标系统采用 ARM 32 位架构,使用硬浮点(HF)ABI,并且基于 GNU/Linux 系统。
  2. --prefix=/usr/local/sqlite-arm

    • 该参数设定了软件的安装路径。当执行 make install 命令时,程序会被安装到 /usr/local/sqlite-arm 目录下。注意如果使用了 DESTDIR 变量,实际的安装路径会有所不同。
  3. --enable-shared

    • 此选项用于开启共享库(动态链接库)的编译。共享库可以被多个程序共享使用,从而减少内存的占用。
  4. --enable-static

    • 该选项用于开启静态库的编译。静态库会被直接链接到程序中,使程序在运行时无需依赖外部的库文件。

编译与安装命令

# 编译并安装到临时目录
make -j$(nproc)
make install DESTDIR=$(pwd)/install
  1. make -j$(nproc)

    • make 命令的作用是依据 Makefile 来编译软件。
    • -j$(nproc) 中的 $(nproc) 会返回系统的 CPU 核心数,-j 选项则让 make 命令能够并行执行多个任务,从而加快编译的速度。
  2. 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;"

版本
在这里插入图片描述
库文件和头文件
在这里插入图片描述

测试
在这里插入图片描述

常见问题解决

  1. 缺少依赖错误

    sudo apt install build-essential libtool automake
    
  2. 运行时找不到库

    # 永久解决:编辑 /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
    
  3. 空间不足处理

    • 编译时添加 --disable-tcl 减少组件
    • 使用 make clean 后只复制 bin/sqlite3lib/libsqlite3.so*

如果空间紧张,可考虑使用 SQLite 精简版 或禁用非必要功能(如 JSON/RTREE 扩展)。

SQLite 精简版

https://www.sqlite.org/amalgamation.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值