步骤三:源码迁移工具扫描源码并迁移
(1)打开“Visual Studio Code”,登录“鲲鹏代码迁移工具”。
(2)选择“Source Code Porting”,点击“+”号,在输入框中手动输入“megahit/build”然后点击选择源码包路径 ,其他参数默认,如下图所示:
(3)点击“Analyze”,分析成功后,源码报告如下图所示:
在需要迁移的文件后,点击“View Suggestion Code”可查看具体文件的迁移建议。
(4)修改文件“megahit_core.dir/flags.make”,鼠标移动至待修改点, 可以看到两条修改建议,如下图所示
根据建议提示Kunpeng platform不支持bmi2和popcnt指令,手动修改代码,删除指令“-mbmi2”和“-mpopcnt”指令。
修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:
(5)修改文件“megahit_core_popcnt.dir/flags.make”,鼠标移至文件待修改处, 可以看到有一处待修改点,如下图所示:
根据建议提示Kunpeng Platform不支持POPCNT指令,点击“Quick Fix…”进行快速修改,或者手动修改代码,删除指令“-mpopcnt”指令。
修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:
(6)修改文件“cpu_dispatch.h”,光标悬停到代码上, 可以看到修改建议,根据提示可看到有四处待修改点,如下图所示:
分别在每部分需要修改的代码,鼠标悬停后出现“Quick Fix…”,选择“Replace the code with the suggested code”点击进行快速修改
- 修改点1、3,应用自动修改功能,自动修改后,如下图所示:
b、修改点2、4,应用自动修改功能
自动修改后如下:
可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确,直接去掉注释,效果如下:
(7)在打开的Terminal窗口中,执行以下命令将“KunpengTrans.h”头文件添加到目录/opt/portadv/portadmin/sourcecode/megahit/src/utils下。
代码:
cp /opt/portadv/tools/inline_asm/config/KunpengTrans.h /opt/portadv/portadmin/sourcecode/megahit/src/utils/
迁移后重新编译
1. 执行make命令
cd /opt/portadv/portadmin/sourcecode/megahit/build/ && make
报错如下图所示:
2. 修改“/opt/portadv/portadmin/sourcecode/megahitkmlib/kmrns.h”文件
说明:“kmrns.h”为x86平台的系统头文件,在arm平台上没有此系统头文件。
执行vi命令进入文本,注释11行代码:
vi /opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h
#include <x86intrin.h> 改为//#include <x86intrin.h>
说明:vi 进入文本后,按”i”进入编辑模式;方向键控制光标位置;
编辑完成后,按”esc”退出编辑模式,之后按”:wq”+”enter”完成写入保存并退出(注意需要先输入英文冒号,再输入wq)
注释后代码如下:
3. 再次执行make命令:
Make
【约等待6分钟】编译通过如下图所示:
步骤三:源码迁移工具扫描源码并迁移
(1)打开“Visual Studio Code”,登录“鲲鹏代码迁移工具”。
(2)选择“Source Code Porting”,点击“+”号,在输入框中手动输入“megahit/build”然后点击选择源码包路径 ,其他参数默认,如下图所示:
(3)点击“Analyze”,分析成功后,源码报告如下图所示:
在需要迁移的文件后,点击“View Suggestion Code”可查看具体文件的迁移建议。
(4)修改文件“megahit_core.dir/flags.make”,鼠标移动至待修改点, 可以看到两条修改建议,如下图所示
根据建议提示Kunpeng platform不支持bmi2和popcnt指令,手动修改代码,删除指令“-mbmi2”和“-mpopcnt”指令。
修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:
(5)修改文件“megahit_core_popcnt.dir/flags.make”,鼠标移至文件待修改处, 可以看到有一处待修改点,如下图所示:
根据建议提示Kunpeng Platform不支持POPCNT指令,点击“Quick Fix…”进行快速修改,或者手动修改代码,删除指令“-mpopcnt”指令。
修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:
(6)修改文件“cpu_dispatch.h”,光标悬停到代码上, 可以看到修改建议,根据提示可看到有四处待修改点,如下图所示:
分别在每部分需要修改的代码,鼠标悬停后出现“Quick Fix…”,选择“Replace the code with the suggested code”点击进行快速修改
b、修改点2、4,应用自动修改功能
自动修改后如下:
可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确,直接去掉注释,效果如下:
(7)在打开的Terminal窗口中,执行以下命令将“KunpengTrans.h”头文件添加到目录/opt/portadv/portadmin/sourcecode/megahit/src/utils下。
代码:
cp /opt/portadv/tools/inline_asm/config/KunpengTrans.h /opt/portadv/portadmin/sourcecode/megahit/src/utils/
迁移后重新编译
1. 执行make命令
cd /opt/portadv/portadmin/sourcecode/megahit/build/ && make
报错如下图所示:
2. 修改“/opt/portadv/portadmin/sourcecode/megahitkmlib/kmrns.h”文件
说明:“kmrns.h”为x86平台的系统头文件,在arm平台上没有此系统头文件。
执行vi命令进入文本,注释11行代码:
vi /opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h
#include <x86intrin.h> 改为//#include <x86intrin.h>
说明:vi 进入文本后,按”i”进入编辑模式;方向键控制光标位置;
编辑完成后,按”esc”退出编辑模式,之后按”:wq”+”enter”完成写入保存并退出(注意需要先输入英文冒号,再输入wq)
注释后代码如下:
3. 再次执行make命令:
Make
【约等待6分钟】编译通过如下图所示: