040——移植数据库sqlite3到i.mx6ull

目录

一、下载

二、移植数据库

三、测试sqlite3


一、下载

SQLite Download Page

暂时先下载最新版的试试,我们以前其实在ubuntu上直接使用过

嵌入式数据库sqlite3_常见的嵌入式数据库-CSDN博客

当时我把常用的操作和怎么使用记录下来了

现在把他移植到开发板上看看行不行

二、移植数据库

        喵的这下载是真的慢呀,下了一天,挂个梯子好了。不对与其自我反思不如批判别人。中国14亿人,为啥不给搞个服务器哇。(手动狗头)

先解压看看

最上层的这些貌似是配置咋编译的我研究一下

下面这介个makefile应该是根据不同的平台来指定的。

我觉得第一步应该是执行这个config脚本来配置makefile一般来说都是这个套路

服了,文档也没说给个使用说明。

抱歉我错怪他了,原来有readme

This package contains:* the SQLite library amalgamation source code file: sqlite3.c* the sqlite3.h and sqlite3ext.h header files that define the C-languageinterface to the sqlite3.c library file* the shell.c file used to build the sqlite3 command-line shell program* autoconf/automake installation infrastucture for building on POSIXcompliant systems* a Makefile.msc, sqlite3.rc, and Replace.cs for building with MicrosoftVisual C++ on WindowsSUMMARY OF HOW TO BUILD
=======================Unix:      ./configure; makeWindows:   nmake /f Makefile.mscBUILDING ON POSIX
=================The generic installation instructions for autoconf/automake are found
in the INSTALL file.The following SQLite specific boolean options are supported:--enable-readline           use readline in shell tool   [default=yes]--enable-threadsafe         build a thread-safe library  [default=yes]--enable-dynamic-extensions support loadable extensions  [default=yes]The default value for the CFLAGS variable (options passed to the C
compiler) includes debugging symbols in the build, resulting in larger
binaries than are necessary. Override it on the configure command
line like this:$ CFLAGS="-Os" ./configureto produce a smaller installation footprint.Other SQLite compilation parameters can also be set using CFLAGS. For
example:$ CFLAGS="-Os -DSQLITE_THREADSAFE=0" ./configureBUILDING WITH MICROSOFT VISUAL C++
==================================To compile for Windows using Microsoft Visual C++:$ nmake /f Makefile.mscUsing Microsoft Visual C++ 2005 (or later) is recommended.  Several Windows
platform variants may be built by adding additional macros to the NMAKE
command line.Building for WinRT 8.0
----------------------FOR_WINRT=1Using Microsoft Visual C++ 2012 (or later) is required.  When using the
above, something like the following macro will need to be added to the
NMAKE command line as well:"NSDKLIBPATH=%WindowsSdkDir%\..\8.0\lib\win8\um\x86"Building for WinRT 8.1
----------------------FOR_WINRT=1Using Microsoft Visual C++ 2013 (or later) is required.  When using the
above, something like the following macro will need to be added to the
NMAKE command line as well:"NSDKLIBPATH=%WindowsSdkDir%\..\8.1\lib\winv6.3\um\x86"Building for UWP 10.0
---------------------FOR_WINRT=1 FOR_UWP=1Using Microsoft Visual C++ 2015 (or later) is required.  When using the
above, something like the following macros will need to be added to the
NMAKE command line as well:"NSDKLIBPATH=%WindowsSdkDir%\..\10\lib\10.0.10586.0\um\x86""PSDKLIBPATH=%WindowsSdkDir%\..\10\lib\10.0.10586.0\um\x86""NUCRTLIBPATH=%UniversalCRTSdkDir%\..\10\lib\10.0.10586.0\ucrt\x86"Building for the Windows 10 SDK
-------------------------------FOR_WIN10=1Using Microsoft Visual C++ 2015 (or later) is required.  When using the
above, no other macros should be needed on the NMAKE command line.Other preprocessor defines
--------------------------Additionally, preprocessor defines may be specified by using the OPTS macro
on the NMAKE command line.  However, not all possible preprocessor defines
may be specified in this manner as some require the amalgamation to be built
with them enabled (see http://www.sqlite.org/compile.html). For example, the
following will work:"OPTS=-DSQLITE_ENABLE_STAT4=1 -DSQLITE_OMIT_JSON=1"However, the following will not compile unless the amalgamation was built
with it enabled:"OPTS=-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"

        上来就说了先config在make好好好

        我估计还得有指定编译器和目标目录的选项之前移植boa和jpeg的时候就是这种步骤。

./configure CC=arm-buildroot-linux-gnueabihf-gcc --host=arm-buildroot-linux-gnueabihf --prefix=../

不出意外的报错了

看样子不能写相对路径

哦吼果然是这个样子

makefile也出来了现在我们make试试

卡在这了不知道是编译的太慢了还是出错了

看样子是编译的太慢了。问题不大

然后make install就可以把库文件移动到刚刚指定的目录了

有点大哇就不放到我的项目里了

这个可执行文件应该是可以配合其它的描述文件进行sql的shell操作

把东西放到板子上看看

可执行文件放到bin下,其他的lib下的动态库放lib

然后忘了这个了刚刚查了一下这个是帮助链接的文件

pkg-config 是一个在 Unix-like 系统(如 Linux)中用于帮助编译器和链接器找到并使用已安装的库的工具。pkg-config 通过读取特定的 .pc(Package Config)文件来提供库的各种必要信息,如版本信息、编译和连接需要的参数等。

以下是 pkg-config 的一些主要功能和作用:

  1. 检查库的版本号pkg-config 可以检查所需库的版本是否满足要求,如果版本不满足,它会打印出错误信息,避免连接到错误版本的库文件。
  2. 获得编译预处理参数:例如宏定义和头文件的路径。这对于编译器在编译时找到正确的头文件非常重要。
  3. 获得编译参数:如库及其依赖的其他库的位置、文件名以及其他一些连接参数。这对于链接器在链接时找到正确的库文件非常重要。
  4. 自动加入所依赖的其他库的设置:当一个库依赖于其他库时,pkg-config 可以自动将这些依赖项添加到编译和链接命令中。
  5. 解决编译连接界面不统一问题:由于库文件可能安装在不同的目录下,使用 -I 和 -L 参数手动指定头文件和库文件的路径可能会导致编译命令界面的不统一。pkg-config 通过预定义的 .pc 文件来提供这些信息,从而解决了这个问题。
  6. 简化编译和链接:通过自动提供正确的编译和链接选项,pkg-config 减少了手动管理这些选项的复杂性。
  7. 便于自动化:在构建系统和脚本中,pkg-config 可以自动化地解决依赖问题,无需人工干预。

在使用 pkg-config 时,通常会通过命令行参数(如 --cflags 和 --libs)来指定需要提取的信息类型。例如,pkg-config --cflags --libs libname 命令会输出与 libname 库相关的编译和链接选项。

虽然我们交叉编译,但是在板子上也放一个好了

还有一个是share下面有个man文件看样子是用来更新man手册的

齐活了

三、测试sqlite3

ok呀,shell模式可以用了太久没用忘了咋用了哈哈

嵌入式数据库sqlite3-CSDN博客

还好以前记录的笔记还算全

下面写个测试程序看看能不能用api

先修改编译框架

不认识这些api呢

明明有哇

没链接库

没毛病

/*  * File name : sql.c* Function  : sql handle* Date      : 2024-05-12  * Version   : 0.1.0  */
/************************************************************************************
***************************************INCLUDE***************************************
*************************************************************************************/
#include "sql.h"
/************************************************************************************
***************************************EXTERN****************************************
*************************************************************************************/int callback(void *arg, int f_num, char ** f_value, char ** f_name)
{int i = 0;for(i = 0; i < f_num; i++){//	printf("%-8s %s", f_value[i], f_name[i]);printf("%-8s", f_value[i]);}printf("++++++++++++++++++++++");putchar(10);return 0;
}int sql_test()
{sqlite3 *db;char *errmsg;//errmsg是一个二级指针,定义一个一级指针取地址。char sql[128];if(sqlite3_open(DATABASE, &db) != SQLITE_OK){printf("%s\n", sqlite3_errmsg(db));return -1;}else{printf("open DATABASE success.\n");}if(sqlite3_exec(db, "create table if not exists xty(id int, device char , data char);",NULL, NULL, &errmsg) != SQLITE_OK)//分号可加可不加{printf("%s\n", errmsg);}else{printf("Create or open table success.\n");}sprintf(sql, "insert into xty values(%d, '%s', '%s')", 1, "gps", "001");if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){printf("%s\n", errmsg);}else{printf("Insert done.\n");}sprintf(sql, "select count(*) from xty where name='gps';");if(sqlite3_exec(db, sql, callback,NULL , &errmsg) != SQLITE_OK){printf("%s", errmsg);}else{printf("select done.\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下水道井盖多分类检测定位

下水道井盖识别&#xff0c;多分类&#xff0c;使用yolov5训练&#xff0c;采用一部分开源数据集和自建数据集。python pytorch opencv 深度学习#人工智能#深度学习#目标检测

【Python项目】基于大数据的【电影市场预测分析】

技术简介&#xff1a;使用Python技术、B/S架构、MYSQL数据库等实现。 系统简介&#xff1a;系统都需要简单的安全登陆检查&#xff0c;在登陆成功之后要进行在映电影的分析、票房分析、电影数据等功能相关性的数据统计&#xff0c;为了使用方便这些统计型的数据使用图表来进行表…

【基于element ui的color选择器】基于element ui的color选择器

技术版本如下&#xff1a; vue 2.6.14 less 3.13.1 element-ui 2.15.6 less-loader 5.0.0需求&#xff1a; 支持RGB、HEX编码、支持吸管吸取颜色、颜色选择器、颜色模板、透明度、色板、线性渐变颜色 效果图&#xff1a; 1.引入选择器的color-all文件 <template><…

web前端之纯CSS实现简单酷炫的照片墙效果、排除元素的伪类、scale

MENU 效果htmlstylescale:not() 效果 html <div class"container"><div class"box"><img src"../../image/1_.jpg"></div><div class"box"><img src"../../image/2_.jpg"></div>…

【python量化交易】qteasy使用教程06——创建自定义因子选股交易策略

创建自定义因子选股策略 使用qteasy创建自定义因子选股交易策略开始前的准备工作本节的目标Alpha选股策略的选股思想计算选股指标用FactorSorter定义Alpha选股策略交易策略的回测结果用GeneralStg定义一个Alpha选股策略回测结果&#xff1a;本节回顾 使用qteasy创建自定义因子选…

Electron、QT、WPF三强争霸,该支持谁呢?

Electron、QT、WPF都是跨平台的桌面应用开发框架&#xff0c;都是非常流行的&#xff0c;作为开发者该选用哪个呢&#xff1f;本文从多个角度分析一下。 一、定义 Electron、Qt 和 WPF 都是用于创建桌面应用程序的框架或工具&#xff0c;它们各自有着不同的特点和优势。 Elec…

Linux-笔记 开发板Uboot命令使用

将之前自学的知识整理了一下笔记&#xff0c;以便回忆 信息查询命令 1、help/?&#xff1a;查看所支持命令 > ? md md - memory displayUsage: md [.b, .w, .l] address [# of objects]2、bdinfo&#xff1a;查询板子信息 > bdinfo arch_number 0x00000000 boot_p…

匿名管道及其应用

目录 一、什么是匿名管道&#xff1f; 三、创建与使用匿名管道 三、匿名管道的特点 匿名管道的四种情况 匿名管道的五种特性 四、匿名管道的实践应用---进程池 在编程的世界中&#xff0c;匿名管道是一种非常重要的通信机制。今天&#xff0c;让我们一起来深入探讨一下匿…

vivado Virtex-7 配置存储器器件

Virtex-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex -7 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列非易失性存储器 进行擦除、…

单链表经典算法OJ题---力扣206,876(带图详解

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建三个指针&#xff0c;看下图 注意&#xff1a;n3如果为空&#xff0c;则不能继续指向下一节点&#xff0c;需要进行判断 代码实现&#xff1a; struct ListNode* reverseLi…

第二课,python基础语法(一),认识字面量和变量、注释

一&#xff0c;字面量 &#xff08;一&#xff09;什么是字面量 被写下来的的固定的值&#xff0c;称之为字面量 &#xff08;二&#xff09;常见的三种字面量类型 &#xff08;三&#xff09;练习一下&#xff0c;使用print去输出三种不同类型的字面量&#xff1a;10&#x…

树莓派安装opencv

安装opencv 上述步骤完成后&#xff0c;输入以下代码(基于python3) sudo apt-get install python3-opencv -y不行的话&#xff0c;试试换源&#xff0c;然后 sudo apt-get update成功&#xff01; 测试opencv是否安装成功 输入 python3 然后再输入 import cv2 没有报错就…

【Java】:向上转型、向下转型和ClassCastException异常

目录 先用一个生动形象的例子来解释向上转型和向下转型 向上转型&#xff08;Upcasting&#xff09; 向下转型&#xff08;Downcasting&#xff09; 向上转型 概念 例子 发生向上转型的情况 1.子类对象赋值给父类引用 2.方法参数传递 3.返回值 向下转型 概念 注意…

扩散模型(Diffusion Model)学习笔记

目录 Diffusion Model 基本原理 预测原理 ddpm 实例 ddmp数字图片生成 有的还没看完 Diffusion Model 基本原理 扩散模型1&#xff1a;基本原理 - 知乎 前向扩散过程可以理解为一个马尔可夫链&#xff0c;即通过逐步对一张真实图片添加高斯噪声直到最终变成纯高斯噪声图片…

labview技术交流-字符串数组连接成字符串

应用场景 我们可能需要将一维的字符串数组转换成一整条字符串&#xff0c;然后方便记录在数据库或表格中的一个单元格中。 代码展示 方案一 我们使用for循环完成这样的功能需求&#xff0c;见下图&#xff1a; 这种方案可能相对基础和普通&#xff0c;但是它更方便和易于扩展…

【科研绘图 基础版】01 使用Python绘制时间序列折线图

下面这段代码绘制了一个折线图&#xff0c;其中包含了实际平均温度数据和使用线性回归模型预测的平均温度数据&#xff08;用来近似地表示数据的整体趋势&#xff09;。 具体来说&#xff0c;图中的横轴表示年份&#xff0c;纵轴表示平均温度。蓝色的实心线代表了实际的平均温度…

《Python机器学习 》书籍分享

文章目录 前言内容介绍作者简介书籍目录 前言 随着计算能力的快速增长&#xff0c;大量任务都可在台式机上完成&#xff1b;在这样的背景下&#xff0c;机器学习应运而生&#xff0c;成为当今炙手可热的话题。但初出茅庐的新手常对机器学习感到十分畏惧&#xff1b;为给这些新…

面试集中营—Seata分布式事务

一、分布式事务 本地事务 在计算机系统中&#xff0c;更多的是通过关系型数据库来控制事务&#xff0c;这是利用数据库本身的事务特性来实现的&#xff0c; 因此叫数据库事务&#xff0c;由于应用主要靠关系数据库来控制事务&#xff0c;而数据库通常和应用在同一个服务器&am…

数据结构:包装类初始泛型

目录 1.包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱 2.什么是泛型3.引出泛型3.1 语法3.2 泛型的使用 4.泛型是如何编译的4.1 擦除机制4.2 为什么不能实例化泛型类型数组 5.泛型的上界5.1 语法5.2 示例5.3 复杂示例 6.泛型方法6.1 定义语法6.2 示例6.3 使用示例-可以类…

【CMU 15-445】Proj4 Concurrency Control

Concurrency Control 通关记录Task1 TimestampsTask2 Storage Format and Sequential ScanTask3 MVCC ExecutorsTask3.1 Insert ExecutorTask3.2 CommitTask3.3 Update and Delete ExecutorTask3.4 Stop-the-world Garbage Collection Task4 Primary Key IndexTask4.0 Index Sc…