- 源码迁移介绍.
为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor), 帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。本文根据华为鲲鹏计算工具链项目组的工具化软件迁移经验,总结了鲲鹏代码迁移工具的实际使用经验,期望能帮助开发者了解如何使用该工具,提高开发者的软件迁移效率。
工具支持的功能性
当用户能够提供源代码进行迁移分析时,可以使用源码迁移功能完成迁移工作。源码迁移功能主要解决了用户的代码兼容性人工排查困难、严重依赖迁移的个人经验、需要反复依赖编译调错定位导致执行效率低等痛点。按照源代码到二进制文件的翻译方式的不同,代码迁移工具将编程语言分为两类:一类是编译型,一类是解释型。
支持源码类型
迁移流程图:

- 实战项目
前提条件:
服务器和操作系统正常运行。
PC端已经安装SSH远程登录工具。
Porting Advisor已在准备好的x86平台环境和鲲鹏平台环境中完成安装并正常运行。
待迁移的相关软件包、源代码已准备就绪。
迁移计划

操作步骤:
步骤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的可以直接一键迁移,有些复杂的需要手动处理

实战项目二
准备依赖库、修改源代码
查看源代码建议
按照扫描建议在第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

总结:
本次软件迁移实战中,通过对软件迁移过程的完整模拟,覆盖了用户利用代码迁移工具对迁移过程进行前期分析、中期修改和后期编译、重构、验证的过程。在其它软件的迁移中,可以参考本实践的思路和操作过程进行操作。
为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor), 帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。本文根据华为鲲鹏计算工具链项目组的工具化软件迁移经验,总结了鲲鹏代码迁移工具的实际使用经验,期望能帮助开发者了解如何使用该工具,提高开发者的软件迁移效率。
工具支持的功能性
当用户能够提供源代码进行迁移分析时,可以使用源码迁移功能完成迁移工作。源码迁移功能主要解决了用户的代码兼容性人工排查困难、严重依赖迁移的个人经验、需要反复依赖编译调错定位导致执行效率低等痛点。按照源代码到二进制文件的翻译方式的不同,代码迁移工具将编程语言分为两类:一类是编译型,一类是解释型。
支持源码类型
迁移流程图:
前提条件:
服务器和操作系统正常运行。
PC端已经安装SSH远程登录工具。
Porting Advisor已在准备好的x86平台环境和鲲鹏平台环境中完成安装并正常运行。
待迁移的相关软件包、源代码已准备就绪。
迁移计划
操作步骤:
步骤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的可以直接一键迁移,有些复杂的需要手动处理
实战项目二
准备依赖库、修改源代码
查看源代码建议
按照扫描建议在第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
总结:
本次软件迁移实战中,通过对软件迁移过程的完整模拟,覆盖了用户利用代码迁移工具对迁移过程进行前期分析、中期修改和后期编译、重构、验证的过程。在其它软件的迁移中,可以参考本实践的思路和操作过程进行操作。