当前位置: 首页 > wzjs >正文

图片网站开发大数据精准营销获客

图片网站开发,大数据精准营销获客,食品企业网站建设方案,网站dns设置Sqlite3交叉编译全过程 一、概述二、下载三、解压四、配置五、编译六、安装七、验证文件类型八、移植8.1、头文件sqlite3.h8.2、动态链接库移植8.3、静态态链接库移植 九、验证使用9.1. 关键函数说明 十、触发器使用十一、sqlite表清空且恢复id值十二、全文总结 一、概述 SQLi…

Sqlite3交叉编译全过程

  • 一、概述
  • 二、下载
  • 三、解压
  • 四、配置
  • 五、编译
  • 六、安装
  • 七、验证文件类型
  • 八、移植
    • 8.1、头文件sqlite3.h
    • 8.2、动态链接库移植
    • 8.3、静态态链接库移植
  • 九、验证使用
    • 9.1. 关键函数说明
  • 十、触发器使用
  • 十一、sqlite表清空且恢复id值
  • 十二、全文总结

一、概述

SQLite 是一个轻量级的嵌入式数据库,广泛应用于嵌入式系统开发中。交叉编译 SQLite 是将 SQLite 编译为目标平台(如 ARM 架构的嵌入式设备)可运行的版本。本文将详细介绍如何在 Linux 环境下交叉编译 SQLite,并验证其在目标平台上的使用。

二、下载

下载链接 https://www.sqlite.org/download.html
在这里插入图片描述

三、解压

tar xvzf sqlite-autoconf-3390300.tar.gz

在这里插入图片描述

四、配置

i.M6ull

cd sqlite-autoconf-3390300/
./configure --host=arm-none-linux-gnueabi --prefix=/home/leo/linux/sqlite-arm/build

全志T3

cd sqlite-autoconf-3390300/
./configure --host=arm-linux-gnueabihf --prefix=/mnt/hgfs/VMShare/T3/sqlite3/build

通过指定编译器的前缀:arm-linux-gnueabihf
只需要修改configure的配置参数即可

CC = /home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc

或者添加到环境变量:
由于交叉编译器已经安装在/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin目录下,并且已经把/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin目录添加到/etc/profile文件中,所以在控制台中可以直接调用编译器。
在这里插入图片描述

五、编译

make

在这里插入图片描述

如何指定交叉编译器?

make PREFIX=/mnt/hgfs/VMShare/T3/sqlite3/build CC=/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc

六、安装

make install

在这里插入图片描述

七、验证文件类型

cd sqlite-arm/build/bin/
file sqlite3sqlite3: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=a0fe1c9b0f059e7ff8ac222d477b006e5c7167cd, not stripped

在这里插入图片描述

八、移植

8.1、头文件sqlite3.h

cd sqlite-arm/build/include/
ls
sqlite3ext.h  sqlite3.h

8.2、动态链接库移植

将.so文件移植到开发板

8.3、静态态链接库移植

将.a文件移植到程序文件,直接调用编译到程序中
在这里插入图片描述

九、验证使用

#include <stdio.h>
#include <sqlite3.h>int main() {sqlite3 *db;          // 数据库句柄char *err_msg = NULL; // 错误信息int rc;               // 返回码// 打开或创建数据库rc = sqlite3_open("test.db", &db);if (rc != SQLITE_OK) {fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));sqlite3_close(db);return 1;}// 创建表const char *create_table_sql = "CREATE TABLE IF NOT EXISTS users (""id INTEGER PRIMARY KEY,""name TEXT NOT NULL,""age INTEGER);";rc = sqlite3_exec(db, create_table_sql, 0, 0, &err_msg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL 错误: %s\n", err_msg);sqlite3_free(err_msg);sqlite3_close(db);return 1;}// 插入数据const char *insert_sql = "INSERT INTO users (name, age) VALUES ('Alice', 25);""INSERT INTO users (name, age) VALUES ('Bob', 30);";rc = sqlite3_exec(db, insert_sql, 0, 0, &err_msg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL 错误: %s\n", err_msg);sqlite3_free(err_msg);}// 查询数据(回调函数)int callback(void *data, int argc, char **argv, char **col_name) {for (int i = 0; i < argc; i++) {printf("%s = %s\n", col_name[i], argv[i] ? argv[i] : "NULL");}printf("\n");return 0;}const char *select_sql = "SELECT * FROM users;";rc = sqlite3_exec(db, select_sql, callback, 0, &err_msg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL 错误: %s\n", err_msg);sqlite3_free(err_msg);}// 更新数据const char *update_sql = "UPDATE users SET age = 26 WHERE name = 'Alice';";rc = sqlite3_exec(db, update_sql, 0, 0, &err_msg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL 错误: %s\n", err_msg);sqlite3_free(err_msg);}// 删除数据const char *delete_sql = "DELETE FROM users WHERE name = 'Bob';";rc = sqlite3_exec(db, delete_sql, 0, 0, &err_msg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL 错误: %s\n", err_msg);sqlite3_free(err_msg);}// 关闭数据库sqlite3_close(db);return 0;
}

9.1. 关键函数说明

1、 sqlite3_open(const char *filename, sqlite3 **ppDb)
打开数据库文件,若不存在则创建。
返回 SQLITE_OK 表示成功。

2、sqlite3_exec(sqlite3 *db, const char *sql, callback, void *data, char **errmsg)
执行 SQL 语句。
callback 函数用于处理查询结果(见示例中的回调函数)。

3、sqlite3_close(sqlite3 *db)
关闭数据库连接。

4、错误处理
使用 sqlite3_errmsg(db) 获取错误信息。
释放错误消息内存:sqlite3_free(err_msg)。

十、触发器使用

9.1、当设定触发器后,修改过表名,由于触发器内写的表名是修改之前的,所有在触发器中的操作会使得操作失败
在这里插入图片描述

触发器
在这里插入图片描述

修改触发器后解决问题。

十一、sqlite表清空且恢复id值

只需要清空表格;然后将sqlite_sequence表中对应表格的seq置为0;也可以直接把sqlite_sequenc中对应表名的记录删除掉。

十二、全文总结

本文详细介绍了 SQLite 的交叉编译过程,包括环境准备、源码下载、配置、编译、验证、移植和使用。通过本文的步骤,读者可以在 Linux 环境下成功交叉编译 SQLite,并将其移植到目标嵌入式平台。此外,本文还介绍了 SQLite 的基本使用方法,包括数据库操作、触发器使用和表清空操作。希望本文能为嵌入式开发人员提供有价值的参考。

http://www.dtcms.com/wzjs/91488.html

相关文章:

  • 成都网站建设排名最近一周的新闻热点事件
  • 免费网站建设平台在线资源搜索引擎
  • wordpress 分类页面临沂seo全网营销
  • 创建一个自己的公司英语朝阳区seo技术
  • 做杀人任务的网站竞价外包运营
  • 信息设计网站谷歌搜索引擎怎么才能用
  • 做那种事情的网站爱站小工具圣经
  • 下载官方网站app下载百度扫一扫
  • 网站要害字seo优化排名工具
  • 做网站销售挣钱吗免费发布推广信息的软件
  • 广州百度网站推广百度seo排名优化公司哪家强
  • php做的网站模版免费html网页模板
  • 做视频网站要什么格式网络舆情的网站
  • 武汉站建设阳西网站seo
  • 给女朋友做情侣网站的程序员百度搜索广告推广
  • 宝安电子厂做高端网站seo推广骗局
  • 营销型企业网站类型今日热点新闻2022
  • 开发网站用什么软件百度推广好做吗
  • 佛山正规的免费网站优化seo网站管理招聘
  • 建设网站有哪些好处和坏处如何制作网页链接教程
  • 广告设计与制作视频网络推广优化seo
  • 保险网站建设的目标网站优化包括哪些
  • 网站建设类岗位有哪些新闻实时报道
  • 营销型网站首页模板1元涨1000粉
  • 威海网站开发网络公司培训课程
  • 加盟型网站网站推广怎么做有效果
  • wordpress测试数据库连接seo的方法有哪些
  • 网站开发硬件需求百度推广一年收费标准
  • app开发公司怎么查看seo排名第一
  • 搭建网站 赚钱谷歌seo外链平台