iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SylixOS如何移植DB数据库
  • 497
分享到

SylixOS如何移植DB数据库

2024-04-02 19:04:59 497人浏览 安东尼
摘要

这篇文章主要为大家展示了“SylixOS如何移植DB数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SylixOS如何移植DB数据库”这篇文章吧。1.DB数

这篇文章主要为大家展示了“SylixOS如何移植DB数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SylixOS如何移植DB数据库”这篇文章吧。

1.DB数据库简介

Berkeley DB(DB)是历史悠久的嵌入式数据库系统,主要应用在UNIX/linux操作系统上,其设计思想是简单、小巧、可靠、高性能。

DB是一个高性能的,嵌入数据库编程库,和C语言c++,Java,Perl,pythonPHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和windows操作系统以及实时操作系统。

2.移植思路

移植Linux中间件到SylixOS上的思路请参考《TN0029_SylixOS第三方中间件移植方法》。

3.移植实现

在伯克利的官方网站上下载伯克利的DB数据库的源码,选择的版本是4.7.25(官方网址Http://www.oracle.com/database/berkeley-db/index.html)。

3.1.在Linux下生成配置文件

把官网下载的源码在Linux环境下编译执行,产生配置文件。

1.把源码工程导入到ubuntu里进行解压缩;

2.在db-4.7.25下新建一个build_arm目录,输入指令../dist/configure CC=arm-linux-GCc进行配置。在build_arm目录下产生配置文件和Makefile,如图 3-1所示。

SylixOS如何移植DB数据库

图 3-1 生成的配置文件和Makefile

这样在Linux环境下生成了配置文件,然后把整个源码包导出。

3.2.移植到SylixOS

把源码工程导入到RealEvo-IDE开发环境上进行开发编译。

3.2.1.创建SylixOS工程

在SylixOS开发环境RealEvo-IDE中创建一个动态库工程libdb,把有配置文件的db源码拷贝到工程下的src目录,如图 3-2所示。

SylixOS如何移植DB数据库

图 3-2 libdb工程

为了不破坏源码工程的结构,移植需要手动修改Makefile,设置工程属性为专家模式,如图 3-3所示。

SylixOS如何移植DB数据库

图 3-3 设置专家模式

3.2.2.参考Linux下的Makefile修改SylixOS的Makefile

打开Linux下的Makefile,找到编译需要依赖哪些*.c文件,如图 3-4所示。

SylixOS如何移植DB数据库

图 3-4 Linux下Makefile

根据Makefile上C_OBjs找到具体依赖的*.c文件,如图 3-5所示。

SylixOS如何移植DB数据库

图 3-5 DB数据库依赖的原文件

根据Linux下的Makefile手动修改IDE上libdb工程的libdb.mk文件,如图 3-6所示。

SylixOS如何移植DB数据库

图 3-6 手动修改IDE的Makefile

3.2.3.修改编译错误

对libdb工程进行编译,会有关于头文件无效错误提示,修改原文件的头文件,如图 3-7所示。

SylixOS如何移植DB数据库

图 3-7 修改头文件名的格式

修改文件依赖的头文件名格式后,仍有一处错误,如图 3-8所示。

SylixOS如何移植DB数据库

图 3-8 出现的汇编错误

在mutex_int.h文件中有个关于LOAD_ACTUAL_MUTEX_CODE这个宏未定义,在Makefile中定义。这个宏功能为:打开ARM/gcc的一个关于互斥的汇编代码,如图 39所示。

SylixOS如何移植DB数据库

图 3-9 Makefile中定义宏

修改过后编译成功,生成libdb.so文件导入虚拟机中。

3.2.4.测试DB数据库

编写测试代码,测试代码如程序清单 3-1所示。

程序清单 3-1 DB数据库测试代码

#include <stdio.h>
#include <db.h>
#include <string.h>

#define DESCRIPTION_SIZE 20
int main() {
	DB        *dbp;                                                 
	u_int32_t  flags;                                               
	int        ret;                                                 
	char      *description = "Grocery bill.";
	char      *description1[DESCRIPTION_SIZE + 1];
	DBT        key, data;
	float      money;
	
	ret = db_create(&dbp, NULL, 0);
	if (ret != 0) {		                                      
		printf("Create fail!\n");
		return -1;
	}
	                                                                 
	flags = DB_CREATE;                                                
	                                                                 
	ret = dbp->open(dbp,                                              
	                NULL,                                            
	                "/apps/db_test/my_db.db",                         
	                NULL,                                            
	                DB_BTREE,                                        
	                flags,                                           
	                0);                                              
	if (ret != 0) {		                                           
		printf("Created new database.\n");
	}
	money = 122.45;
	
	memset(&key, 0, sizeof(DBT));
	memset(&data, 0, sizeof(DBT));
	key.data = &money;
	key.size = sizeof(float);

	data.data = description;
	data.size = strlen(description) + 1;

	ret = dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);
	if (ret == DB_KEYEXIST) {
		dbp->err(dbp, ret, "Put failed because key %f already exists", money);
	}
	memset(&data, 0, sizeof(DBT));
	data.data = &description1;
	data.ulen = DESCRIPTION_SIZE + 1;
	data.flags = DB_DBT_USERMEM;
	dbp->get(dbp, NULL, &key, &data, 0);
	printf("data: %s\n", (char *) data.data);
	
	if (dbp != NULL)
		dbp->close(dbp, 0);
	return 0;
}

程序运行现象如图 3-10所示。

SylixOS如何移植DB数据库

图 3-10 测试现象

测试产生一个DB数据库,并且从数据库中读取数据"Grocery bill."。

4.移植总结

4.1.移植流程

移植流程如下:

  1. 在官网下载源码;

  2. 在Linux下运行实现功能;

  3. 一般中间件网络上有移植笔记,可参考;

  4. 在Linux下利用configure功能产生配置文件(配置文件configure.h和Makefile等很重要);

  5. 参考Makefile修改IDE的工程****.mk文件(主要知晓中间件依赖的源文件);

  6. 在移植过程中请做好移植记录,以便查询修改信息;

  7. 如有修改或者添加功能实现请新建文件。

4.2.移植原则

移植原则如下:

  1. 做减法,先裁剪留出主要功能;

  2. 不修改内核源码,如有功能SylixOS暂未实现,可根据功能语义编写功能函数或该功能非主要可裁剪掉。

在移植编译过程中会出现各种错误,需要细心的根据错误信息查找错误位置,在根据SylixOS功能进行修改实现。

以上是“SylixOS如何移植DB数据库”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: SylixOS如何移植DB数据库

本文链接: https://www.lsjlt.com/news/67181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SylixOS如何移植DB数据库
    这篇文章主要为大家展示了“SylixOS如何移植DB数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SylixOS如何移植DB数据库”这篇文章吧。1.DB数...
    99+
    2022-10-19
  • zabbix-数据库移植
    作用:用户测试zabbix的数据存储功能 移植数据库 zabbix服务端 stop zabbix-server #停止zabbix服务,使不再产生数据 scp -r /var/lib/mysq...
    99+
    2022-10-18
  • SQLite数据库怎么移植
    这篇文章主要讲解了“SQLite数据库怎么移植”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQLite数据库怎么移植”吧!在挂有小型系统的嵌入式产品中,移...
    99+
    2022-10-18
  • 如何将数据库从MySQL移植到MemSQL
    本篇内容介绍了“如何将数据库从MySQL移植到MemSQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • 怎么把数据库从MySQL移植到MemSQL
    本篇内容主要讲解“怎么把数据库从MySQL移植到MemSQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么把数据库从MySQL移植到MemSQL”吧!因为 ...
    99+
    2022-10-18
  • 阿里云数据库删除的DB如何找回来?
    本文将为您详细介绍如何在阿里云上找回被误删除的数据库。 如果你是阿里云数据库的用户,可能会遇到过误删除DB的情况。那么,如何找回呢?以下是一些步骤和注意事项,希望对你有所帮助。一、找回方法登录阿里云管理控制台,进入“数据库服务”页面。点击“...
    99+
    2023-12-09
    阿里 数据库 DB
  • 如何理解MySQL官方的示例数据库和sakila-db
    本篇文章为大家展示了如何理解MySQL官方的示例数据库和sakila-db,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。小编提供MySQL官方的两个示例数据库emp...
    99+
    2022-10-19
  • 如何迁移MySQL 5.7数据库
    这篇文章主要介绍如何迁移MySQL 5.7数据库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在源库用mysqldump备份数据库:mysqldump -uroot -p --def...
    99+
    2022-10-18
  • 数据库批量迁移如何弄
    数据库批量迁移通常有以下几种方法:1. 数据库备份和恢复:首先,在源数据库中进行备份操作,生成一个数据库备份文件。然后,在目标数据库...
    99+
    2023-09-20
    数据库
  • mysql数据库如何转移到oracle
    目录mysql数据库转移到oracle常用的方法有好些,如下总结mysql数据库转移到oracle 在研发过程中,可能会用到将表数据库中的表结构及数据迁移到另外一种数据库中, 比如说...
    99+
    2022-12-22
    mysql数据库 mysql数据库转移 mysql数据库转移oracle
  • 如何实现oracle数据迁移到db2数据库
    这篇文章将为大家详细讲解有关如何实现oracle数据迁移到db2数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、表结构迁移在plsql中选择表----->d...
    99+
    2022-10-18
  • 如何使用DataPump迁移Oracle数据库
    这篇文章主要介绍如何使用DataPump迁移Oracle数据库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!之前测试过使用RMAN迁移Oracle数据库(Oracle11.2.0.1...
    99+
    2022-10-18
  • 数据库数据文件如何进行分区转移
    数据库数据文件如何进行分区转移,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。由于之前同事没有对磁盘分区做规划,可以看到数据和系...
    99+
    2022-10-19
  • Linux系统中如何迁移MySQL数据库
    这篇文章将为大家详细讲解有关Linux系统中如何迁移MySQL数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一步 &ndash; 执行MySQL转储在将数据库文件传输到新的VPS之前,我们...
    99+
    2023-06-27
  • 如何使用数据库迁移神器Flyway
    本篇内容介绍了“如何使用数据库迁移神器Flyway”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据迁移前...
    99+
    2022-10-18
  • oracle两个数据库之间如何迁移表
    在Oracle数据库中,迁移表可以通过以下几种方式实现:1. 使用Oracle Data Pump工具:Data Pump是Orac...
    99+
    2023-09-17
    oracle 数据库
  • DAG情况下如何移动数据库路径
    移动数据库路径的场景很多,典型的场景是因为磁盘空间不够用了,想移动到另一个盘,移动数据库路径有向导并不难,但是如果启用了DAG 的情况下,就有一些注意事项,以下说明。PS:如果需要移动数据库路径,就必须要先...
    99+
    2022-10-18
  • 如何实现MySQL数据库的无缝迁移
    这篇文章主要介绍如何实现MySQL数据库的无缝迁移,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL数据库的无缝迁移问题?问:在平时的开始过程中,由于经常“需求理解,架构设计,...
    99+
    2022-10-19
  • 如何使用RMAN实现Oracle数据库迁移
    这篇文章主要介绍了如何使用RMAN实现Oracle数据库迁移,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.打开RMAN[oracle@E...
    99+
    2022-10-19
  • 如何使用PHP数据库迁移工具Phinx
    这篇文章给大家分享的是有关如何使用PHP数据库迁移工具Phinx的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.安装composer require nhzex/think-phinx2.执...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作