# 前情提要
先奉上第三讲直播链接:https://www.hikunpeng.com/zh/developer/live/detail/1534417825342652417
下面先来谈一下,这一讲,我们要做什么?
简单来说,就是将之前`x86`平台下的软件或源代码做修改,从而**迁移**到`arm`平台,以便能够在**鲲鹏处理器**上运行。
# 代码迁移介绍

通过华为鲲鹏的代码迁移工具,使能开发华为积累的迁移经验,帮助开发者高效快速地完成代码迁移,“站在巨人的肩膀上”,使得很多代码都可以实现自动迁移。甚至,对于软件包,能直接重构并生成鲲鹏平台上兼容的对应格式软件包,非常方便哈。
如下图所示,这是web界面的展示:

帮助用户进行自动化分析,并输出报告,并给出代码迁移建议,一般来说,建议很详细和中肯,甚至可以直接按照建议修改就能迁移成功。
目前支持的源码类型如下表格所示:

可以看到,基本上支持目前的主流语言,对于编译性语言,自然要修改相应源代码。而对于`python`这类的脚本语言,因为可能涉及底层库,所以也要做下迁移。
迁移流程如下所示,支持安装在`x86`平台,也可以安装在鲲鹏平台:

这里鲲鹏开发者社区提供了预装好工具的远程实验室,通过申请,可以免费试用,配置很强大的哦。
# 实战项目

工欲善其事,必先利其器。所以,先准备下鲲鹏平台。
这里要现申请好远程实验室,并可以远程连接,`windows`平台下,推荐mobaxterm,这可是神器,非常好用的。
好了,下面我们的操作将在如下的环境配置下运行:

接下来就是具体操作步骤了:

上传界面的操作截图:

上述界面的具体配置如图所示,执行“开始分析”后,会在右下角显示分析进度,并在右上角显示报告。

点击右上角的报告,可进入如下界面:

来看看具体分析报告,我们可以在左侧“文件列表”选择查看的文件,我们选择一个来看看:

可以看到,有红色波浪线,这表示该行代码存在与鲲鹏平台的兼容问题,光标悬浮于其上,一般会弹出修改建议,仔细阅读后,可作出修改,一般按照建议修改就行了,还是很方便地。

可以直接修改,别忘了之后点击右上角的保存,可以直接保存到后台的服务器上,方便快捷!
再来看一个要修改的地方:

这里是因为是`x86`平台的专属,鲲鹏平台是没有的,所以就不行了,按照建议修改成鲲鹏的即可,还是非常贴心的。
之后下载下来,上传到远程实验室的服务器上,如下图所示,如果之前的操作是直接对远程实验室的服务器上的代码修改,就不用下载再上传了,会直接保存在原位置哦。

注意,有时编译会报`warning`,暂时不用管,可能是因为远程实验室的编译器版本较低,如果用最新版本应该就不会报了。
最后,验证迁移结果,再迁移后重新执行编译,查看结果。具体步骤为:

编译完成后,就可以运行看看了。
# 结语
总的来说,还是比较简单的,这基本上是得益于华为工程师做了很好的迁移工具的封装,把困难留给了自己,简单留给了我们,感谢他们的“负重前行”。
不过需要注意的是,这里是比较简单,基本按照迁移工具修改就好了,但是最好是经过自己分析和记录一下,因为后续可能遇到更复杂的代码,建议可能不适用,关键还是在于人,现在要好好积累经验。
最后奉上老师的赠语:

感谢分享
谢谢。
感谢分享
感谢分享
感谢分享
感谢分享
感谢分享
感谢分享
感谢分享