---
title: 使用DevKit工具迁移开源软件Megahit-官方技术文章-鲲鹏社区
description: 本实践使用鲲鹏DevKit迁移工具分析嵌入式汇编软件项目，给出合理建议，帮助用户迁移嵌入式汇编软件项目。
keywords: DevKit,Megahit,工具迁移开源,软件,官方技术文章,鲲鹏社区,背景介绍,执行源码迁移
url: https://www.hikunpeng.com/developer/techArticles/20251205-1?envFlag=1
section: (其他)
---

# 使用DevKit工具迁移开源软件Megahit-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251205-1?envFlag=1
描述: 本实践使用鲲鹏DevKit迁移工具分析嵌入式汇编软件项目，给出合理建议，帮助用户迁移嵌入式汇编软件项目。
关键词: DevKit,Megahit,工具迁移开源,软件,官方技术文章,鲲鹏社区,背景介绍,执行源码迁移

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

使用DevKit工具迁移开源软件Megahit

使用DevKit工具迁移开源软件Megahit

DevKit软件迁移

发表于 2025/12/05

0

## 背景介绍

Megahit是一个超快速和内存高效的NGS汇编程序。它是针对多基因组优化的，但也适用于一般的单基因组组装和单细胞组装。Megahit源码包存在大量汇编，迁移到鲲鹏平台前需要识别并验证通过鲲鹏DevKit迁移工具迁移后的代码是否正确，以及识别出是否还有鲲鹏DevKit迁移工具遗漏的相关文件。

本实践使用鲲鹏DevKit迁移工具分析嵌入式汇编软件项目，给出合理建议，帮助用户迁移嵌入式汇编软件项目。

关于Megahit的详细介绍，请访问Megahit的GitHub页面。

语言：C++/C/Python；开源协议：GPL3.0；

软件要求如下：

| 软件要求 |  |  |
| --- | --- | ---|
| 项目 | 版本 | 获取地址 |
| 开源软件Megahit | Megahit 1.2.9 | https://github.com/voutcn/megahit/releases/tag/v1.2.9 |

硬件要求如下：

| x86平台环境 |  |
| --- | ---|
| 项目 | 说明 |
| 服务器 | x86虚拟机（KVM）环境 |
| CPU | Intel Xeon Processor (Skylake， IBRS) 2.1GHz |
| OS | CentOS 7.6/openEuler 20.03-LTS-SP1/openEuler 22.03 |
| GCC版本 | • CentOS 7.6：GCC 4.8.5• openEuler 20.03-LTS-SP1：GCC 7.3.0• openEuler 22.03：GCC 10.3.1 |
| 安装的工具 | 鲲鹏DevKit |

| 鲲鹏平台环境 |  |
| --- | ---|
| 项目 | 说明 |
| 服务器 | 鲲鹏服务器 |
| CPU | 鲲鹏920处理器 |
| OS | CentOS 7.6/openEuler 20.03-LTS-SP1/openEuler 22.03 |
| GCC版本 | • CentOS 7.6：GCC 4.8.5• openEuler 20.03-LTS-SP1：GCC 7.3.0• openEuler 22.03：GCC 10.3.1 |
| 安装的工具 | 鲲鹏DevKit |

## 执行源码迁移

### 1、准备Megahit源码。

- 使用MobaXterm工具，以root用户登录服务器。
- 若存在源码迁移目录请忽略该步骤，否则请手动创建源码迁移目录（以devadmin上传源码迁移文件为例）。

```bash
mkdir -p /opt/DevKit/workspace/devadmin/porting/sourcecode/
chmod -R 700 /opt/DevKit/workspace/devadmin/porting/
chown -R devkit:devkit /opt/DevKit/workspace/devadmin/porting/
```

说明 /opt：表示DevKit安装路径，请根据实际路径修改。

- 从GitHub获取Megahit源码，并上传至该目录解压。

```bash
tar -zxvf megahit-1.2.9.tar.gz
cd megahit-1.2.9
```

- 创建构建文件夹并进入。

```bash
mkdir build && cd build
```

- 生成Makefile文件。

```bash
cmake .. -DCMAKE_BUILD_TYPE=Release
```

- 获取修改后的Megahit源码到本地，然后执行以下命令删除源码迁移目录下的Megahit源码。

```bash
rm -rf /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit-1.2.9
```

### 2、返回源码迁移任务创建页面，通过文件夹方式上传Megahit源码，编译器版本选择“BiSheng Compiler 2.5.0.1”，编译命令填写“make -C build”其它参数采用默认值即可，单击“开始迁移”进行扫描分析。

### 3、分析完成后自动跳转至报告页面，进入“源码迁移建议”页签查看具体的修改建议。

### 4、查看报告中“需要迁移的源码文件”，单击对应代码文件右侧的“查看建议源码”，查看需要迁移的文件。图 迁移报告提供的依赖库信息看，该源码包不依赖于基本环境（OS环境基本的安装依赖，如Glibc等）外的其它依赖文件。

其中，phmap.h、phmap_bits.h、phmap_config.h和xxh3.h源码文件中已存在宏定义，当源码结构中存在SSE2和SSSE3时才定义头文件，该宏定义嵌套了两层，所以无需修改。

### 5、根据系统提示的修改建议进行修改，鼠标单击内嵌汇编代码（cpu_dispatch.h），可以看到五处待修改点，一处无需修改。

修改点一、四，应用自动修改功能。

自动修改后：

修改点三、五，单击“Quick Fix > 在本文件中批量修改该类建议”，应用自动修改功能。

自动修改后：

可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确，效果如下：

### 6、根据系统提示进行修改，鼠标移至构建文件（kmrns.h）待修改点处，可以看到三处待修改点，一处需要修改，两处无需修改。

修改建议，同上个文件一样应用自动修改，效果如下：

### 7、根据系统提示进行修改，鼠标移至构建文件（megahit_core.dir/flags.make）待修改点处，可以看到两处待修改点。

根据建议提示Kunpeng platform不支持BMI2和POPCNT指令，手动修改代码，删除指令-mbmi2和-mpopcnt指令。

修改后效果如下：

### 8、根据系统提示进行修改，鼠标移至构建文件（megahit_core_popcnt.dir/flags.make）待修改点处，可以看到一处待修改点

修改建议，应用自动修改，效果如下：

### 9、迁移后重新编译。将KunpengTrans.h头文件添加到“/opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils”目录下。

执行如下拷贝命令：

```bash
cp /opt/DevKit/devkitplugins/inline_asm/config/KunpengTrans.h /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils
```

再次运行make命令。

## 运行验证

- 使用MobaXterm工具，以root用户登录服务器。
- 进入可执行文件的安装目录。

```bash
cd /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/build
```

- 执行以下命令运行算例。

```bash
make simple_test
```

运行完成后命令行将回显以下信息：

本页内容
