Devkit代码迁移工具读书笔记—第二讲:手把手带你使用代码迁移工具实现源码迁移
收藏回复举报
Devkit代码迁移工具读书笔记—第二讲:手把手带你使用代码迁移工具实现源码迁移
发表于2022-11-24 23:58:35
0 查看

1 学习完这一讲的目标

能够对跨平台软件迁移有一定的了解,同时掌握代码迁移工具的使用,能够熟练使用迁移工具执行迁移任务。

2 背景介绍

    在国产替代的大背景下,鲲鹏计算平台是一个非常有潜力的产业。为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor),帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。这里根据华为鲲鹏计算工具链项目组的工具化软件迁移经验,总结了鲤鹏代码迁移工具的实际使用经验,期望能帮助 了解如何使用该工具,提高开发者的软件迁移效率。

3 工具支持的功能特性

功能描述
源码迁移

检查用户C/C++/Fortran/Go/汇编等软件构建工程文件,

并指导用户如何迁移该文件检查用户C/C++/Fortran/Python/Java/Scala/Go/汇编等软件源码,并指导用户如何迁移该源码文件。

x86汇编指令转换,分析x86汇编指令,并转换成功能对等的鹏汇编指令

内存一致性检查内存一致性检查是分析、修复用户软件中存在的内存读写顺序问题。
64位运行模式检查64位运行模式检查功能可以检查和分析原32位平台上的软件源代码,将源码迁移至64位平台时需要修改的地方识别出来.
结构体字节对齐检查结构体字节对齐检查功能可以检查源码中结构体类型变量的字节对齐情况,用户可以根据检查结果判断是否需要进行字节对齐所需要的数据结构定义修改。
软件迁移评估

检查用户软件安装包(RPM、DEB、TAR、ZIPGZIP文件等)中包含的SO(Shared Objet)依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。

检查用户Java类软件包JAR、WAR)中包含的SO依赖库和二进制文件,并评估SO依赖库和二进制文件的可迁移性

检查指定的用户软件安装路径下的SO依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。

软件包重构在鲲鹏平台上,分析用户提供的x86平台rpm格式或deb格式的软件包构成,重构并生成平台兼容的对应格式软件包,
专项软件迁移在鲲鹏平台上,编译并构建生成平台兼容的软件包通过自动化方式,对部分常用的解决方案组件,进行x86源码修改

4 支持的源码类型

源码类型文件类型
构建文件

Makefile

CMakelists.txt

C/C++c、.cpp、.h等
Fortranf、.fpp等
汇编s、.asm
Gogo
解释型语言 (Python、Java、Scala)  scala  py java

5 总结

本次软件迁移实战中,通过对软件迁移过程的完整模拟,覆盖了用户利用代码迁移工具对迁移过程进行前期分析、中期修改和后期编译、重构、验证的过程。在其它软件的迁移中,可以参考本课程的思路和操作过程进行操作。

本帖最后由 匿名用户2023/11/20 17:16:54 编辑

我要发帖子