《megahit 源码迁移》项目大作业解析
《megahit 源码迁移》项目大作业解析
一、作业题目
利用扫描迁移工具进行源码分析,根据扫描建议修改源码,让源码在鲲鹏平台可以正常编译运行。
Megahit是一个超快速和内存高效的NGS汇编程序。它是针对多基因组优化的,但也适用于一般的单基因组组装和单细胞组装。Megahit源码包存在大量汇编,迁移到鲲鹏平台前需要识别并验证通过“鲲鹏代码迁移工具”迁移后的代码是否正确,以及识别出是否还有“鲲鹏代码迁移工具”遗漏的相关文件。
本实践使用“鲲鹏代码迁移工具”分析嵌入式汇编软件项目,给出合理建议,帮助用户迁移嵌入式汇编软件项目。
语言:C++/C/Python
开源协议:GPL3.0
二、操作前提
1)认真观看迁移工具的实战视频。
2)在鲲鹏社区申请远程实验室,操作系统选择OpenEuler。
https://www.hikunpeng.com/zh/developer/devkit
3)这里选择远程服务器,具体配置和信息如下图所示。
申请之后,会收到一封邮件,里面会有详细的环境配置信息。
三、准备工作
1. 准备Megahit源码
a. 使用MobaXterm工具,以root用户登录服务器。
b. 进入“鲲鹏代码迁移工具”源码文件存放路径。
cd /opt/portadv/portadmin/sourcecode/
c. 下载Megahit源码。
git clone https://github.com/voutcn/megahit.git
d.将代码进行合并(注意,命令中init的前面是两个英文的短划线)。
cd megahit/ && git submodule update --init
e.创建构建文件夹并进入。
mkdir build && cd build
f.生成Makefile文件。
cmake .. -DCMAKE_BUILD_TYPE=Release
g.修改megahit目录属组。
cd ../ && chown -R porting:porting *
四、操作步骤截图
1.我们先在终端执行如下命令获取gcc版本。
gcc --version
我们可以看到gcc版本是10.3.1
2. 登录鲲鹏代码迁移工具Web界面。
具体登录信息可在邮件中查看,注意需要登录VPN。
a. 选择源码迁移,进行源码分析参数填充。
点击开始分析,会进入如下界面,注意看右下角:
分析完成后,会在如下图位置看到报告:
b. 任务执行成功,查看源码报告。
我们点击,进入报告:
点击“源码迁移建议“,查看具体建议:
c. 点击报告源码迁移建议,查看需要迁移的文件。
d. 根据系统提示的修改建议进行修改。
根据系统提示进行修改,鼠标移至构建文件(megahit_core.dir/flags.make)待修改点处,可以看到两处待修改点。
根据建议提示Kunpeng platform不支持BMI2和POPCNT指令,手动修改代码,删除指令-mbmi2和-mpopcnt指令。根据系统提示进行修改,鼠标移至构建文件(megahit_core_popcnt.dir/flags.make)待修改点处,可以看到一处待修改点,修改建议,同上个文件。
记得修改完成每个文件后,单击保存。
根据系统提示的修改建议进行修改,鼠标点击内嵌汇编代码(cpu_dispatch.h), 可以看到四处待修改点。
这里根据Quick Fix提示,自动应用完成修改即可。自动修改效果如下图所示:
可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确,直接去掉注释,效果如下:
3. 迁移后重新编译。
a. 将KunpengTrans.h头文件添加到目录下到
/opt/poradv/portadmin/sourcecode/megahit/src/utils。
执行如下拷贝命令:
cp /opt/portadv/tools/inline_asm/config/KunpengTrans.h /opt/portadv/portadmin/sourcecode/megahit/src/utils/
b. 再次执行make命令。
cd /opt/portadv/portadmin/sourcecode/megahit/build/ && make
报错信息如下图所示:
c. 修改“/opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h”文件。
执行vi命令进入文本,注释11行代码:
vi /opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h
这是因为<x86intrin.h>为平台的系统头文件,在Arm平台上没有此系统头文件。
d. 再次执行make命令,编译通过。
编译时间有点长,请耐心等待。编译成功的截图如下所示:
4. 运行和验证
a. 使用MobaXterm工具,以root用户登录服务器。
b. 进入可执行文件的安装目录。
cd /opt/portadv/portadmin/sourcecode/megahit/build/
c. 执行以下命令运行算例。
make simple_test
运行完成后命令行将回显以下信息:
这表示我们迁移成功了。
- 点赞
- 收藏
- 关注作者
评论(0)