---
title: 修改源代码
description: "1. 单击源码迁移报告中“需要迁移的源码文件”右侧相应文件的“查看建议源码”页签，如图1所示。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/demo/smartdenovopt_21_0012.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/demo/smartdenovopt_21_0012.html
indexId: 0ce02041d62f66f22f65b33024fa1fab56dadd42be32560134aca48057a2ea0f70
---
# 修改源代码

1. 单击源码迁移报告中“需要迁移的源码文件”右侧相应文件的“查看建议源码”页签，如图1所示。
  图1 查看建议源码

2. 选择“需要迁移的源码文件”中不同的源码文件进行操作，即可切换至对应源码文件的迁移建议页面。

  - VS Code
    图2 源码迁移建议

  - WebUI
    图3 源码迁移建议

3. 根据迁移报告，确认有两个文件需要修改。在“源码迁移建议”页面，检查每个文件的修改建议，并根据建议进行源码修改。

  a. 根据“需要迁移的源码文件”中Makefile文件内红色波浪线提示的内容，    修改Makefile文件
。
  b. 根据“需要迁移的源码文件”中ksw.c文件内红色波浪线提示的内容，    修改ksw.c文件
。
- VS Code端：相应代码修改完之后，可使用快捷键“Ctrl+S”保存。
- WebUI端：相应代码修改完之后，可单击“保存”。


#### 修改Makefile文件

在“源码迁移建议”页面，查看Makefile文件的修改建议，如下图所示。

- VS Code
  图4 Makefile文件源码迁移建议

- WebUI
  图5 Makefile文件源码迁移建议


具体建议内容如下图所示。

- VS Code
  图6 建议源代码1

  图7 建议源代码2

- WebUI
  图8 建议源代码1

  图9 建议源代码2


根据以上建议，Makefile文件中需要给CFLAGS变量添加选项“-march=armv8.2-a -fsigned-char”，同时，还需要删除CFLAGS变量中的“-mpopcnt”和“-msse3”选项。获取并安装鲲鹏系统库（BoostKit-ksl_2.3.1.zip(https://www.hikunpeng.com/boostkit/library/detail?subtab=AVX2KI)）后，在GLIBS变量中添加“-I /usr/local/ksl/include/ -L /usr/local/ksl/lib/ -lavx2ki”。

该示例以编译器GCC 4.8.5为例，高版本“-march=armv8.2-a -fsigned-char”选项会有不同，请根据提示建议进行修改。


修改后的代码（修改时进行了x86_64分支和aarch64分支的区分处理），如下图所示。

- VS Code
  图10 修改后的Makefile

- WebUI
  图11 修改后的Makefile


#### 修改ksw.c文件

在“源码迁移建议”页面，查看ksw.c文件的修改建议，如下图所示。

- VS Code
  图12 ksw.c文件源码迁移建议

  图13 建议源代码

- WebUI
  图14 ksw.c文件源码迁移建议

  图15 建议源代码


这种提示都是关于intrinsic函数使用方面的内容。根据提供的建议，单击“Quick Fix”增加‘#include "avx2ki.h"’到ksw.c文件中，并针对x86和AArch64分别设置头文件包含的分支定义，以确保在代码同时适配x86和AArch64两种架构的情况下完成代码的修改，如下所示（以编辑器版本GCC 4.8.5为例）。

```
1    #if defined(__aarch64__)
2       #include "avx2ki.h"
3    #endif
31   #if defined(__x86_64__)
32      #include <emmintrin.h>
33   #endif
```

出现如图15或图13所示的建议时，用户需要访问相应网站，获取对应文件，参考建议进行操作。
