---
title: 执行源码迁移
description: "- 已成功安装鲲鹏DevKit，并已安装对应工具。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24/probestpractice/kunpengDevKitProPractice_0037.html
sourcePath: /source/zh/kunpengdevkithistory/devkit_24/probestpractice/kunpengDevKitProPractice_0037.html
indexId: 9bf5910bc35e0a3f3760512da16d775bc869aa67a13c3ed828d799a8cc19e7b892
---
# 执行源码迁移

#### 前提条件

- 已成功安装鲲鹏DevKit，并已安装对应工具。
- 已安装Git并配置环境变量。


#### 操作步骤

1. 准备Megahit源码。

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

```
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安装路径，请根据实际路径修改。

  c. 进入源码迁移目录并下载Megahit源码。

```
cd
/opt
/DevKit/workspace/devadmin/porting/sourcecode/
git clone https://github.com/voutcn/megahit.git
```


  d. 将代码进行合并。

```
cd megahit/ && git submodule update --init
```


  e. 创建构建文件夹并进入。

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


  f. 生成Makefile文件。

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


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

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


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

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

4. 查看报告中“需要迁移的源码文件”，单击对应代码文件右侧的“查看建议源码”，查看需要迁移的文件。
  其中，phmap_config.h和xxh3.h源码文件中已存在宏定义，当源码结构中存在SSE2和SSSE3时才定义头文件，该宏定义嵌套了两层，所以无需修改。

  图3 查看需迁移文件

5. 根据系统提示的修改建议进行修改，鼠标点击内嵌汇编代码（cpu_dispatch.h），可以看到四处待修改点。
图4 查看修改点

  a. 修改点一、三，应用自动修改功能。
    图5 应用自动修改1

    自动修改后：

    图6 自动修改效果1

  b. 修改点二、四，应用自动修改功能。
    图7 应用自动修改2

    自动修改后：

    图8 自动修改效果2

    图9 自动修改效果3

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

    图10 修改后效果1

    图11 修改后效果2


  c. 单击“保存”，本文件修改完成。
6. 根据系统提示进行修改，鼠标移至构建文件（megahit/src/kmlib/kmrns.h）待修改点处，可以看到三处待修改点，一处需要修改，两处无需修改。
图12 待修改点
Megahit已经对Arm做了部分适配，因此只需使用自动修改功能，不需要使用avx2ki.h头文件。


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

  b. 单击“保存”，本文件修改完成。
7. 根据系统提示进行修改，鼠标移至构建文件（megahit_core.dir/flags.make）待修改点处，可以看到两处待修改点。
图14 待修改点

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

    修改后效果如下：

    图16 手动修改效果

  b. 单击“保存”，本文件修改完成。
8. 根据系统提示进行修改，鼠标移至构建文件（megahit_core_popcnt.dir/flags.make）待修改点处，可以看到一处待修改点。
图17 待修改点

  a. 修改建议，应用自动修改，效果如下：
    图18 修改效果

  b. 单击“保存”，本文件修改完成。
9. 迁移后重新编译。

  a. 将KunpengTrans.h头文件添加到“/opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils”目录下。
    执行如下拷贝命令：

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


  b. 再次执行make命令。

```
cd /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/build && make
```
