# 前情提要
来,先上官方视频链接:https://www.hikunpeng.com/zh/developer/live/detail/1533984621405396993
搭配本文,效果更佳哦!
# 鲲鹏代码迁移工具简介

鲲鹏代码迁移工具支持**ide插件(vs code、intellij)**和**浏览器**两种工作模式。本工具分为**客户端、服务器端**两部分,需要安装后使用。
鲲鹏代码迁移工具是一款可以简化客户应用迁移到基于**鲲鹏916/920的服务器**的过程的工具。代码迁移工具可自动扫描并分析待迁移软件,提供可迁移性评估报告;也可对待迁移软件进行源码分析,准确定位需迁移的代码,并给出友好的迁移指导或一键代码替换;同时支持将x86软件包重构成鲲鹏平台软件包、专项软件一键迁移及其他增强功能等。注意仅适用于**开发和测试环境**,仅**支持x86 linux软件迁移到鲲鹏linux**上的扫描、分析与迁移。点击查看 [鲲鹏代码迁移工具最新动态](https://www.hikunpeng.com//detail/zh/kunpengdevps/wtsnew/wtsnew-kunpengdevps.html)。
操作系统要求openeuler 20.03 (lts)、centos 7.6、ubuntu18.04、麒麟v10、uos 20等,详细的运行平台和操作系统对应关系请参见 [兼容性查询工具](https://support-it.huawei.com/kunpeng-software-support/#/index/search?tool=port&lang=zh)。
咱们这次训练营会申请远程实验室使用,官方建议大家申请的是**openeuler 20.03 (lts)**。
# 鲲鹏代码迁移工具功能介绍
## 软件迁移评估

软件迁移评估帮助用户分析用户x86环境上软件包安装路径中的so库文件,并检查这些文件与鲲鹏平台的兼容性。支持web界面和cli命令行操作,当然,如果你希望用vs code或intellij也没问题,有相应的插件提供使用。
以web界面为例,一般在已经登录鲲鹏代码迁移工具下:
1. 在页面左侧,选择“软件迁移评估”。
2. 在创建分析任务区勾选“分析软件包”或“分析已安装软件”,并对以下参数进行配置。

对应参数的具体说明,可以查看[文档介绍](https://www.hikunpeng.com//detail/zh/kunpengdevps/porting/usermanual/kunpengpt_06_0110.html)。
3. 单击“开始分析”,生成分析报告。
弹窗页面显示任务分析进度,分析完成后,单击“查看报告”进入“迁移报告”界面。
> 用户可在任务进行过程中单击关闭,取消任务。
> 支持多个用户同时创建分析任务。
4. 分析完成后,在页面左侧,选择“软件迁移评估”。
5. 在历史报告的列表中,单击指定分析任务的报告名称,进入“迁移报告”界面。

## 源码迁移
源码迁移功能分析用户c/c /asm/fortran/go/解释型语言软件的可迁移性,通过鲲鹏代码迁移工具可执行自动分析,生成分析报告,并指导用户如何迁移该文件。
来,介绍下大体步骤:
1. 成功登录鲲鹏代码迁移工具。
2. 在创建分析任务区对以下参数进行配置。

注意,申请的远程实验室使用,不是上图的编译器,应该是`gcc 7.3`,具体对应关系在官方文档中有,如下:
```
openeuler 20.03 默认为bisheng compiler 2.1.0
openeuler 20.03 sp1 默认为gcc 7.3
openeuler 20.03 sp2 默认为gcc 7.3
openeuler 20.03 sp3 默认为gcc 7.3
```
3. 单击“开始分析”,生成分析报告。弹窗页面显示任务分析进度,分析完成后,单击“查看报告”进入“迁移报告”界面。在这里选择文件,鼠标悬浮于红波浪线的代码处,可以查看源码迁移建议。
**若需要在原始代码中进行修改操作,务必随时对编辑的源码进行保存,否则可能会因为会话超时而丢失修改的代码。**
## 软件包重构

分析x86平台上linux软件包的构成及依赖性,将平台相关的依赖文件替换为鲲鹏平台兼容的版本,并重构成适用于鲲鹏平台的软件包。
软件包重构能够分析用户提供的x86软件包,并根据用户提供的资源文件尝试构建鲲鹏平台软件包。软件包重构需要用户在鲲鹏平台使用。
1. 在已成功登录鲲鹏代码迁移工具的前提下。在web工具的左边标题栏中,选择“软件包重构”。

2. 填写“软件包存放路径”。可以通过以下两种方式实现:
> 单击“上传”按钮上传软件包。
> 先将软件包手动上传到服务器上本工具的指定路径下(例如:/opt/portadv/portadmin/packagerebuild/),给porting用户开读写和执行权限,再单击填写框选择下拉框中的软件包即可,也可以手动填写软件包名称。
3. 单击下一步,配置依赖文件。
4. 然后单击“确认重构”。


5. 重构成功后,单击“下载重构软件包”可查看执行结果,如图所示。

## 专项软件迁移

专项软件迁移提供开源软件迁移、调优的工具化亚博平台下载的解决方案。用户可以按照亚博平台下载的解决方案的粒度选择相应的软件,进行工具化快速迁移软件。专项软件迁移包含软件下载、修改、编译和软件包构建功能,需要用户在基于鲲鹏的服务器环境使用。
专项软件迁移是对大数据、数据库、高性能计算和web等场景的部分常用软件源码进行自动迁移、编译并构建生成鲲鹏平台兼容的软件包,该功能只支持在鲲鹏平台环境上运行。
## 增强功能

鲲鹏代码迁移工具提供下面四种增强功能:
> ### 64位运行模式检查
对用户c/c 软件从32位模式迁移到64位模式进行检查。工具强制以64位模式编译用户软件,并通过编译选项发现从32位模式迁移到64位模式的必要修改,并提示用户进行进一步检查。
> ### 结构体字节对齐检查
用户软件中的结构体变量进行检查,分析其内存分配情况,并反馈用户。
> ### 缓存行对齐检查
对c/c 源码中结构体变量进行128字节对齐检查,提升访存性能。
> ### 内存一致性检查
对用户软件迁移到鲲鹏平台可能存在的内存一致性问题进行检查、修复。自动修复工具需要更新用户使用的gcc编译器,随后在用户软件的编译过程中自动完成内存一致性问题的修复。
# 总结
鲲鹏代码迁移工具还是很强的,系统性强,功能比较完善,很不错,大大减轻人的迁移负担。
感谢分享
感谢分享
感谢分享
谢谢,一起学习,共同进步哈。
谢谢鼓励。
感谢鼓励,共同进步。
论坛留言
感谢分享
感谢分享