将sqlite3移植到嵌入式Linux开发板M6708上

简介: 最近,因为项目的需要,我们购买了广州致远电子有限公司的M6708-T工控板(预装Linux系统),准备将sqlite3移植到本嵌入式开发板上。

最近,因为项目的需要,我们购买了广州致远电子有限公司的M6708-T工控板(预装Linux系统),准备将sqlite3移植到本嵌入式开发板上。笔者参考了网上的很多文章,均无法达到成功移植的目的。在多方摸索之下,终于采用了一种简单的方法成功实现了移植。本文介绍如何成功地将sqlite3移植到M6708-T工控板上,可供相关的开发人员参考。

准备工作
在本机上安装好Linux系统(一般都是安装在虚拟机上面的),并按照工控板的用户手册在Linux系统上安装交叉开发的工具链。
将工控板上电,能够通过串口或网络等方式登录到Linux系统中。这里建议为工控板设置静态的ip地址,这样以后上传程序比较方便。
登录到sqlite的官网(https://www.sqlite.org/)上去下载最新的sqlite源代码,如下截图所示:
这里写图片描述

移植步骤
第一步:将sqlite源代码拷贝到虚拟机的Linux系统目录中,并使用命令tar xvf sqlite-autoconf-3200100.tar.gz解压,生成sqlite-autoconf-3200100目录,转到该目录中,可看到文件列表如下截图所示:
这里写图片描述
第二步:使用交叉编译工具编译代码,生成sqlite的可执行文件。在编译之前,可以用echo $CC命令查看系统上的编译工具是否是交叉编译工具而非系统自带的gcc,执行该命令后的结果如下截图所示:
这里写图片描述
确认交叉编译工具正确之后,便可执行命令$CC sqlite3.c shell.c -o sqlite3 -lpthread –ldl生成可执行文件sqlite3,执行该命令后的结果如下截图所示:
这里写图片描述
第三步:将生成的可执行文件sqlite3从虚拟机拷贝到本机目录下,并利用FTP工具将之上传到工控板的目录下。这里,笔者使用了FileZilla软件将sqlite3上传到/usr/local/DT/sqlite目录下,如下截图所示:
这里写图片描述
第四步:将上传之后的sqlite3文件移动到/usr/bin目录下,并赋予可执行的权限。执行mv sqlite3 /usr/bin/命令移动文件,并使用命令chmod 777 sqlite3修改权限。命令执行过程的截图如下所示:
这里写图片描述
第五步:执行命令sqlite3即可成功启动数据库。数据库启动之后的截图如下所示:
这里写图片描述
通过以上五个步骤,sqlite就被成功移植到了工控板上,接下来便可以进行建表等操作了,也可以编写代码调用数据库的API实现对数据的存储及读取操作了。

总结
在很多参考文章中,都是通过运行configure和make命令来生成sqlite3可执行文件的,笔者最开始也使用了这种方法,但生成的可执行文件在工控板上无法运行。笔者重复试了很多次,也没有找到无法成功移植的原因。因此采用了在本文中描述的方法,轻松实现了sqlite数据库的移植。
当然,相比于PC版的Linux来说,嵌入式开发板上的Linux的功能被裁剪了很多,这也导致了很多命令是没有的。我们在将一些程序移植到嵌入式开发板上的时候,一定要意识到它与普通的操作系统之间的差别。


这里写图片描述

目录
相关文章
|
18天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
67 15
|
1月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
105 13
|
5月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
210 3
|
6月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
5月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
231 0
|
7月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
7月前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
371 0
|
消息中间件 缓存 Unix
[面试必备]嵌入式Linux内核开发必须了解的三十道题
[面试必备]嵌入式Linux内核开发必须了解的三十道题
|
Linux
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
266 0
|
Linux Go 人机交互
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定

热门文章

最新文章