鲲鹏Devkit代码迁移工具课堂笔记第二讲:手把手带你使用代码迁移工具实现源码迁移
收藏回复举报
鲲鹏Devkit代码迁移工具课堂笔记第二讲:手把手带你使用代码迁移工具实现源码迁移
发表于2022-12-06 21:39:38
0 查看
  1. 源码迁移介绍.

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

工具支持的功能性

​

当用户能够提供源代码进行迁移分析时,可以使用源码迁移功能完成迁移工作。源码迁移功能主要解决了用户的代码兼容性人工排查困难、严重依赖迁移的个人经验、需要反复依赖编译调错定位导致执行效率低等痛点。按照源代码到二进制文件的翻译方式的不同,代码迁移工具将编程语言分为两类:一类是编译型,一类是解释型。

支持源码类型

迁移流程图:

F32D8F0DD859B207F9E53487EC40EF2D.jpg

  1. 实战项目

    前提条件:

    服务器和操作系统正常运行。

    PC端已经安装SSH远程登录工具。

    Porting Advisor已在准备好的x86平台环境和鲲鹏平台环境中完成安装并正常运行。

    待迁移的相关软件包、源代码已准备就绪。

迁移计划

1EFFD35EF9FF8FC0FD8691148D61BB4E.jpg

操作步骤:

步骤1

从https://github.com/ruanjue/smartdenovo 下载获取待使用的软件源码包smartdenovo-master.zip.

步骤2

进入Porting Advisor“源码迁移"菜单进行扫描分析。在随后出现的相关配置项和按钮中

点击“上传”上传前面下载到的smartdenovo-master.zip,并点中输入框,选择源码包为"smartdenovo-master"。其它几个选项根据我们实际的情况进行选择

下一步

点击“开始分析”,进行分析并得到扫描分析报告

再往下

准备依赖库并修改源代码

从扫描报告中提供的依赖库信息看,该源码包不依赖于基本环境(OS环境基本的安装依赖,如GLIBC等)外的其它依赖文件。

切换至源代码迁移报告的“源代码迁移建议”页签

下一步

根据红色波浪线的修改提示,在“源码迁移建议"页面,查看Makefile文件的修改建议

根据以上建议,Makefile文件中需要给CFLAGS变量增加选项内容"-march=armv8-a -fsigned-char",同时,还需要删除CFLAGS变量中的选项"-mpopcnt" 和"-msse3"。

修改后的代码(修改时进行了x86_ 64分支和aarch64分支的区分处理)

修改完点击保存

有quick fix的可以直接一键迁移,有些复杂的需要手动处理

7EA0768BE1CE5EC7F8DFEC9AFB525E79.jpg

实战项目二

准备依赖库、修改源代码

查看源代码建议

按照扫描建议在第59行和65行的FFLAGS后添加           march= armv8.2-a -mtund= tsv110 -ffree-line-length-none -cpp -std=legacy"

迁移后重新编译

执行命令进行编译安装            cd /opt/portadv/portadmin/sourcecode/dl poly-RELEASE- 1- 10/source/make dlpoly

1CF1F6EAA7D9356949EB9FE40D5620E5.jpg

总结:

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

本帖最后由 匿名用户 于 2023/11/20 17:00:26 编辑

我要发帖子