将sqlite3移植到arm开发板上:

一、下载源代码

sqlite3网址:https://www.sqlite.org/download.html

下载:sqlite-autoconf-3460100.tar.gz

二、解压

在Linux家目录下创建一个sqlite3文件夹,将压缩包复制到该文件夹下,再在该目录下打开一个终端,执行命令解压文件:

bash 复制代码
tar -vxf sqlite-autoconf-3460100.tar.gz

三、编译

1、再在sqlite3目录下再创建一个install文件夹

2、进入sqlite-autoconf-3460100目录:

bash 复制代码
cd sqlite-autoconf-3460100

3、 配置 SQLite:

bash 复制代码
./configure --host=arm-linux --prefix=/home/linux/sqlite3/install

这个命令的目的是为了在当前系统上配置 SQLite,以便进行交叉编译,生成可以在 ARM 架构的 Linux 系统上运行的 SQLite 版本,并将其安装到指定的目录中。

  1. ./configure:这是许多开源软件中用于进行配置的脚本。它会检查系统环境、依赖关系,并根据给定的选项生成相应的 Makefile 和其他配置文件

  2. --host=arm-linux

    • --host选项指定了目标平台。在这里,arm-linux表示目标是 ARM 架构的 Linux 系统。这告诉配置脚本在编译过程中生成适用于 ARM 架构的代码。
  3. --prefix=/home/linux/sqlite3/install

    • --prefix选项指定了安装目录的前缀。当编译完成后,软件将被安装到这个指定的目录下。在这个例子中,软件将被安装到/home/linux/sqlite3/install目录。这个目录通常包含了可执行文件、库文件、头文件等。

4、编译

分别执行make、make install

make时会执行Makefile命令

make install 会将编译生成的文件放在prefix所到指定的/home/linux/sqlite3/install 目录下,其实就是拷贝过去。

make编译时会比较慢,需要一些时间等待,直到命令提示符跳出

四、移植

这里使用的挂载目录是/home/linux/nfs

步骤:

1.查看prefix指定的目录/home/linux/sqlite3/install下是否出现了bin,include,lib目录,有的话代表成功。
2.打开bin目录,将sqlite3拷贝到nfs目录下。
3.将lib目录下的libsqlite3.so libsqlite3.so.0.8.6 libsqlite3.so.0 文件拷贝到nfs目录下。

五、连接开发板,执行挂载命令

bash 复制代码
mount -o nolock,tcp 192.168.1.17:/home/linux/nfs /mnt

注意:执行挂载命令时加上tcp,是因为NFS的默认传输协议是 UDP,而PC机与嵌入式系统通过UDP交互时就会出现严重的网卡丢包现象,所以需要手动改为TCP协议。

进入开发板下的mnt目录

将sqlite3复制到开发板家目录下的bin目录

将libsqlite3.so libsqlite3.so.0.8.6 libsqlite3.so.0复制到开发板家目录下的lib目录

五、运行sqlite3

在开发板命令行输入sqlite,回车,出现以下信息表示移植成功

六、测试

编写一个执行sql语句的程序:

cpp 复制代码
#include <stdio.h>
#include <sqlite3.h>
int main()
{
    sqlite3* db;
    int ret = sqlite3_open("/my/user.db",&db);
    if ( ret != SQLITE_OK )
    {
        fprintf(stderr,"sqlite3_open error,%s\n",sqlite3_errstr(ret));
        sqlite3_close(db);
        return 1;
    }

    char *errmsg;
    char sqlite3_cmd[] = "insert into my_table values(NULL,'lao6');";
    ret = sqlite3_exec(db,sqlite3_cmd,NULL,NULL,&errmsg);
    if ( ret != SQLITE_OK )
    {
        fprintf(stderr,"exec error,%s\n",errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db);
        return 1;
    }

    sqlite3_close(db);

    printf("Hello World!\n");
    return 0;
}

交叉编译该程序:

编译时要指定头文件和库的路径

arm-linux-gcc main.c -lsqlite3 -I /home/linux/sqlite3/install/include -L /home/linux/sqlite3/install/lib

将生成的a.out复制到nfs,在板子上运行该程序,打开数据库查看运行结果。

相关推荐
云和数据.ChenGuang1 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys2 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi2 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据3 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi4 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀4 小时前
Redis梳理
数据库·redis·缓存
独行soc4 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘