示例简介
尊敬的开发者你好,为了帮助开发者解决将软件从X86平台迁移到鲲鹏平台过程中遇到的疑难问题,鲲鹏提供了DevKit迁移工具,帮助开发者更快更方便的实现跨平台软件的迁移,您可以阅读本文进行DevKit迁移工具的快速入门,在Cloudide环境中体验软件迁移过程。
本篇文章主要介绍了以下知识:
(1)跨平台软件为何要进行迁移
(2)如何使用DevKit迁移工具实现软件的快速迁移
(3)以kafka软件包为待迁移案例展示软件的快速迁移过程
基础技能:
(1)具备基础的C/C++语言编程能力
(2)了解常用的Linux操作命令
(3)了解Cloudide基础操作
跨平台软件为何要进行迁移
在了解DevKit代码迁移工具之前,您可能会有这样的疑问,为什么要进行软件迁移呢?不能直接下载软件使用吗?为了让您更好的了解这个问题,接下来从开发过程的一个常见场景中一窥究竟,开发者应该都在电脑上安装过软件,很多软件都提供了X86版本和Arm版本,如果你买的是苹果笔记本,是无法安装X86版本软件的,这其实就是芯片架构的问题,苹果笔记本使用的是和鲲鹏一样的芯片架构,是没有办法直接使用X86版本的软件的。
这就涉及到了我们鲲鹏架构和传统X86架构之间的差异。鲲鹏和传统X86的最根本的区别是两者的指令集不同(X86是复杂指令集、鲲鹏使用精简指令集),一样的代码c=a+b,经过编译后,在不同的芯片架构下转换成的不同的机器码,从而不能交叉运行。相应的编译选项,语言表现也有所差异。

如何使用DevKit迁移工具实现软件的快速迁移
为了解决平台差异问题,Devkit推出了迁移工具帮助用户进行迁移,迁移工具提供了五大迁移功能,帮助开发者简单方便的将软件迁移到鲲鹏平台上进行使用:

一个待迁移的系统往往是由很多个复杂的子组件组成的,除了自己开发的源代码,还有引用的各种依赖软件,使用Devkit迁移工具会使整个系统迁移工作更加简单高效,首先用户可以进行软件迁移评估,将待迁移的软件包传入,获取so依赖库兼容信息、工作量预估信息等多项关键数据,方便后续重构功能的使用。
之后再根据子组件的情况使用不同的重构功能,如果待迁移的子组件是C/C++编写的软件,同时可以获取到源码包,则可以使用源代码迁移功能进行源码级别迁移,迁移结束后还可以使用鲲鹏亲和分析进行扫描,修复其中的变量对齐、内存一致性等问题、提升软件的性能和稳定性;除了源码级的重构,迁移工具还提供了软件包重构功能,将用户的X86软件包重构为适用于鲲鹏平台的软件包;同时针对工程和科研领域的一些常用软件,用户可以直接使用专项软件迁移功能获取迁移好的软件包直接使用,一步到位完成迁移。
如果希望更进一步了解DevKit代码迁移工具Porting Advisor,欢迎大家前往鲲鹏社区了解代码迁移工具的详细使用方法:
https://www.hikunpeng.com/document/detail/zh/kunpengdevps/porting/qs/qs-pa-kunpengdevps.html
以kafka为例体验软件迁移过程
将kafka重构为适用于鲲鹏平台的软件包就需要用到上一小节提到的软件迁移评估功能和软件包重构功能,kafka是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流,为了体验kafka的软件包重构,我们需要进行以下几项工作:
(1)准备工作
打开cloudide环境,确认预置的实验资源
(2)软件包迁移工作
a. 使用软件迁移评估功能,获取kafka的可替换的依赖文件
b. 使用软件包重构功能,利用获取的替换依赖文件,对kafka软件包进行重构
实验准备工作
步骤一:打开cloudide开发环境,安装鲲鹏开发框架插件
点击示例工程页面右侧的“运行调试”按钮打开cloudide开发环境。之后点击cloudide页面左侧的“插件管理”页签,搜索“kunpeng”,安装鲲鹏代码迁移插件。

步骤二:登录鲲鹏代码迁移插件
安装完成后,点击左侧鲲鹏原生开发插件的图标,如果是第一次登录鲲鹏DevKit系列的插件,需要创建用户,点击登录后创建密码,点击“确认”,进入到登录页面。如果之前已经创建过用户,直接输入密码登录即可

再次输入密码,点击“登录”后,在使用声明中勾选“我已阅读并同意”,点击“确认”,进入工具页面。
步骤三:确认当前环境以及预置的实验资源
为了方便开发者完成本次实验,环境中已经预置了需要重构的kafka软件包。首先点击左上角的应用程序菜单,选择“终端”中的“新建终端”。

在下方弹出的终端窗口中输入命令,确认预置rpm软件包资源是否存在。结果如下图所示
Copied!
cd /home/user/devkitdemo/porting
ls

通过cp命令将要分析的源码放到工具的软件迁移评估路径下,这样后面执行扫描过程时可以省略上传步骤,直接进行迁移评估。
Copied!
cp /home/user/devkitdemo/porting/kafka-2.4.1-1.el7.noarch.rpm /opt/portadv/portadmin/package/
cp /home/user/devkitdemo/porting/kafka-2.4.1-1.el7.noarch.rpm /opt/portadv/portadmin/packagerebuild/
进行软件迁移评估
完成上述准备工作后,现在就可以开始执行软件迁移评估任务了。首先在代码迁移工具的左侧树中点击“软件迁移评估”对应的“创建任务”按钮。勾选“分析软件包”,在页面的输入框中点击,可自动识别已经放置到工具目录下的kafka-2.4.1-1.el7.noarch.rpm工程,单击识别到的kafka工程备选框,点击“开始分析”。

先对kafka软件包进行软件迁移评估,扫描一下迁移过程可能需要哪些替换的依赖包,点击左上角的软件迁移评估旁边的按钮创建任务,勾选“分析软件包”选项,在输入框中选中预置在环境中的X86软件包kafka-2.4.1-1.el7.noarch.rpm,点击“开始分析”,等待分析结束后查看分析报告。
从报告中可以发现,一共有三个依赖文件被工具扫描出来,其中zookeeper和bigtop-utils是kafka安装的必须依赖软件,官方提供了arm版本工具包,可以直接安装;rocksdbjni-5.18.3.jar是kafka内存在兼容问题的jar包,这个jar包可以直接在报告中下载进行兼容替换,点击旁边的下载按钮将jar包下载到本地。(注:如果未显示jar包,请将下方终端窗口向下拉一下,即可出现jar包)

进行软件包重构
完成软件迁移评估后,在代码迁移工具的左侧树中点击“软件包重构”对应的“创建任务”按钮,新建软件包重构任务。在输入框中选中待重构软件包kafka-2.4.1-1.el7.noarch.rpm

点击“下一步”,进入“配置依赖文件”步骤,点击添加上传,上传刚刚下载的依赖文件rocksdbjni-5.18.3.jar:

注:上传的依赖文件名称不支持存在空格等特殊字符,如果下载了重复的jar包,需要将文件名后面的序号内容删除,如rocksdbjni-5.18.3 (1).jar需改名为rocksdbjni-5.18.3.jar。
上传完成后,关闭上传页面,点击下一步,如下图,勾选“授权访问外部网络获取重构软件包需要的依赖文件”,以允许工具在重构过程中自动连接到各OS发行版的官方网站或者鲲鹏Maven仓库在华为云镜像源上的下载地址下载需要的依赖文件。之后点击下一步进入“执行重构”步骤,这里需要再进行最后一次确认才能开始重构操作。

重构动作完成后,可以从报告中得到构建完成的软件包保存的路径,此时kafka软件的软件包重构就已经成功了,开发者可以点击右下角的下载重构软件包按钮下载到cloudide环境中。

如果开发者想把软件包下载到本地,可以先通过“下载重构软件包”将软件下载到当前已打开工程目录下,之后点击左侧树上的“资源管理器”页签,选中要下载的软件包,右键下载即可下载到本地。

示例简介
尊敬的开发者你好,为了帮助开发者解决将软件从X86平台迁移到鲲鹏平台过程中遇到的疑难问题,鲲鹏提供了DevKit迁移工具,帮助开发者更快更方便的实现跨平台软件的迁移,您可以阅读本文进行DevKit迁移工具的快速入门,在Cloudide环境中体验软件迁移过程。
本篇文章主要介绍了以下知识:
(1)跨平台软件为何要进行迁移
(2)如何使用DevKit迁移工具实现软件的快速迁移
(3)以kafka软件包为待迁移案例展示软件的快速迁移过程
基础技能:
(1)具备基础的C/C++语言编程能力
(2)了解常用的Linux操作命令
(3)了解Cloudide基础操作
跨平台软件为何要进行迁移
在了解DevKit代码迁移工具之前,您可能会有这样的疑问,为什么要进行软件迁移呢?不能直接下载软件使用吗?为了让您更好的了解这个问题,接下来从开发过程的一个常见场景中一窥究竟,开发者应该都在电脑上安装过软件,很多软件都提供了X86版本和Arm版本,如果你买的是苹果笔记本,是无法安装X86版本软件的,这其实就是芯片架构的问题,苹果笔记本使用的是和鲲鹏一样的芯片架构,是没有办法直接使用X86版本的软件的。
这就涉及到了我们鲲鹏架构和传统X86架构之间的差异。鲲鹏和传统X86的最根本的区别是两者的指令集不同(X86是复杂指令集、鲲鹏使用精简指令集),一样的代码c=a+b,经过编译后,在不同的芯片架构下转换成的不同的机器码,从而不能交叉运行。相应的编译选项,语言表现也有所差异。
如何使用DevKit迁移工具实现软件的快速迁移
为了解决平台差异问题,Devkit推出了迁移工具帮助用户进行迁移,迁移工具提供了五大迁移功能,帮助开发者简单方便的将软件迁移到鲲鹏平台上进行使用:
一个待迁移的系统往往是由很多个复杂的子组件组成的,除了自己开发的源代码,还有引用的各种依赖软件,使用Devkit迁移工具会使整个系统迁移工作更加简单高效,首先用户可以进行软件迁移评估,将待迁移的软件包传入,获取so依赖库兼容信息、工作量预估信息等多项关键数据,方便后续重构功能的使用。
之后再根据子组件的情况使用不同的重构功能,如果待迁移的子组件是C/C++编写的软件,同时可以获取到源码包,则可以使用源代码迁移功能进行源码级别迁移,迁移结束后还可以使用鲲鹏亲和分析进行扫描,修复其中的变量对齐、内存一致性等问题、提升软件的性能和稳定性;除了源码级的重构,迁移工具还提供了软件包重构功能,将用户的X86软件包重构为适用于鲲鹏平台的软件包;同时针对工程和科研领域的一些常用软件,用户可以直接使用专项软件迁移功能获取迁移好的软件包直接使用,一步到位完成迁移。
如果希望更进一步了解DevKit代码迁移工具Porting Advisor,欢迎大家前往鲲鹏社区了解代码迁移工具的详细使用方法:
https://www.hikunpeng.com/document/detail/zh/kunpengdevps/porting/qs/qs-pa-kunpengdevps.html
以kafka为例体验软件迁移过程
将kafka重构为适用于鲲鹏平台的软件包就需要用到上一小节提到的软件迁移评估功能和软件包重构功能,kafka是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流,为了体验kafka的软件包重构,我们需要进行以下几项工作:
(1)准备工作
打开cloudide环境,确认预置的实验资源
(2)软件包迁移工作
a. 使用软件迁移评估功能,获取kafka的可替换的依赖文件
b. 使用软件包重构功能,利用获取的替换依赖文件,对kafka软件包进行重构
实验准备工作
步骤一:打开cloudide开发环境,安装鲲鹏开发框架插件
点击示例工程页面右侧的“运行调试”按钮打开cloudide开发环境。之后点击cloudide页面左侧的“插件管理”页签,搜索“kunpeng”,安装鲲鹏代码迁移插件。
步骤二:登录鲲鹏代码迁移插件
安装完成后,点击左侧鲲鹏原生开发插件的图标,如果是第一次登录鲲鹏DevKit系列的插件,需要创建用户,点击登录后创建密码,点击“确认”,进入到登录页面。如果之前已经创建过用户,直接输入密码登录即可
再次输入密码,点击“登录”后,在使用声明中勾选“我已阅读并同意”,点击“确认”,进入工具页面。
步骤三:确认当前环境以及预置的实验资源
为了方便开发者完成本次实验,环境中已经预置了需要重构的kafka软件包。首先点击左上角的应用程序菜单,选择“终端”中的“新建终端”。
在下方弹出的终端窗口中输入命令,确认预置rpm软件包资源是否存在。结果如下图所示
cd /home/user/devkitdemo/porting ls
通过cp命令将要分析的源码放到工具的软件迁移评估路径下,这样后面执行扫描过程时可以省略上传步骤,直接进行迁移评估。
cp /home/user/devkitdemo/porting/kafka-2.4.1-1.el7.noarch.rpm /opt/portadv/portadmin/package/ cp /home/user/devkitdemo/porting/kafka-2.4.1-1.el7.noarch.rpm /opt/portadv/portadmin/packagerebuild/
进行软件迁移评估
完成上述准备工作后,现在就可以开始执行软件迁移评估任务了。首先在代码迁移工具的左侧树中点击“软件迁移评估”对应的“创建任务”按钮。勾选“分析软件包”,在页面的输入框中点击,可自动识别已经放置到工具目录下的kafka-2.4.1-1.el7.noarch.rpm工程,单击识别到的kafka工程备选框,点击“开始分析”。
先对kafka软件包进行软件迁移评估,扫描一下迁移过程可能需要哪些替换的依赖包,点击左上角的软件迁移评估旁边的按钮创建任务,勾选“分析软件包”选项,在输入框中选中预置在环境中的X86软件包kafka-2.4.1-1.el7.noarch.rpm,点击“开始分析”,等待分析结束后查看分析报告。
从报告中可以发现,一共有三个依赖文件被工具扫描出来,其中zookeeper和bigtop-utils是kafka安装的必须依赖软件,官方提供了arm版本工具包,可以直接安装;rocksdbjni-5.18.3.jar是kafka内存在兼容问题的jar包,这个jar包可以直接在报告中下载进行兼容替换,点击旁边的下载按钮将jar包下载到本地。(注:如果未显示jar包,请将下方终端窗口向下拉一下,即可出现jar包)
进行软件包重构
完成软件迁移评估后,在代码迁移工具的左侧树中点击“软件包重构”对应的“创建任务”按钮,新建软件包重构任务。在输入框中选中待重构软件包kafka-2.4.1-1.el7.noarch.rpm
点击“下一步”,进入“配置依赖文件”步骤,点击添加上传,上传刚刚下载的依赖文件rocksdbjni-5.18.3.jar:
注:上传的依赖文件名称不支持存在空格等特殊字符,如果下载了重复的jar包,需要将文件名后面的序号内容删除,如rocksdbjni-5.18.3 (1).jar需改名为rocksdbjni-5.18.3.jar。
上传完成后,关闭上传页面,点击下一步,如下图,勾选“授权访问外部网络获取重构软件包需要的依赖文件”,以允许工具在重构过程中自动连接到各OS发行版的官方网站或者鲲鹏Maven仓库在华为云镜像源上的下载地址下载需要的依赖文件。之后点击下一步进入“执行重构”步骤,这里需要再进行最后一次确认才能开始重构操作。
重构动作完成后,可以从报告中得到构建完成的软件包保存的路径,此时kafka软件的软件包重构就已经成功了,开发者可以点击右下角的下载重构软件包按钮下载到cloudide环境中。
如果开发者想把软件包下载到本地,可以先通过“下载重构软件包”将软件下载到当前已打开工程目录下,之后点击左侧树上的“资源管理器”页签,选中要下载的软件包,右键下载即可下载到本地。
更多学习内容
到这里整个实验流程就已经结束了,通过上面的软件迁移动作我们拿到了重构好的kafka安装包,这个安装包可以直接在鲲鹏环境上安装运行。各位开发者也可以参考上面的软件迁移过程迁移一些其他的跨平台软件,同时探索迁移工具提供的源码迁移、亲和分析等功能,更深入的了解鲲鹏代码迁移工具的使用。
除了上述学习内容,我们还提供了很多辅助学习资源(课程/实验/文档/文章),希望能帮助到您更好的使用鲲鹏DevKit迁移工具:
鲲鹏代码迁移工具介绍(课程):
https://www.hikunpeng.com/learn/courses-list/detail/1590560841222623234
学习路径 - 应用跨平台迁移(课程):
https://www.hikunpeng.com/developer/learning-path/detail/8aeaef971c4d42619dd2ba0829e699ca