快速入门(源码迁移)
本文以源码迁移CLI工具为例,教您如何快速使用DevKit扫描分析软件包,快速完成迁移。文档面向读者为需要在x86环境将C/C++/ASM/Fortran/Go/解释型语言等项目迁移到鲲鹏平台的开发工程师。
介绍
鲲鹏DevKit是一款提供涵盖迁移、开发调试、编译、测试、性能调优及系统诊断等各环节的开发使能工具集。其中,迁移场景提供系统迁移、源码迁移、软件迁移评估特性。源码迁移支持CLI、VS Code和WebUI工作模式,能够自动扫描分析C/C++/ASM/Fortran/Go/解释型语言等源码文件,定位出需迁移代码并给出迁移指导,将x86 Linux软件迁移到鲲鹏Linux系统,极大提高了代码迁移效率。
适用版本:Kunpeng DevKit 26.2.RC1
快速安装源码迁移CLI工具
在CLI工作模式下,源码迁移功能包含在应用迁移工具包里面,需要安装应用迁移工具包。
- 获取软件包。
- 将获取的软件包上传至服务器的自定义目录下(以“/home/DevKit”为例)。
- 安装框架包和应用迁移功能包。
1rpm -ivh devkit-x.x.x-1.aarch64.rpm devkit-porting-x.x.x-1.aarch64.rpm
- x86平台下,软件包后缀为“x86_64.rpm”。
- devkit-x.x.x-1.aarch64.rpm或devkit-x.x.x-1.x86_64.rpm为框架包,安装RPM功能包前需先安装此包。
返回信息如下:
1 2 3 4 5 6 7
Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:devkit-x.x.x-1 ################################# [ 33%] devkit installed 2:devkit-porting-x.x.x-1 ################################# [ 67%] devkit-porting installed
- 验证是否安装成功。
1rpm -qa | grep devkit
若回显中有已安装包名则安装成功。
1devkit version返回信息如下:
1devkit version x.x.x
使用源码迁移扫描软件包
以开源软件smartdenovo-master迁移到鲲鹏平台为例,指导用户快速扫描分析x86软件包,定位需迁移代码,按照建议修改源代码,完成软件迁移。
- 获取源代码。从GitHub下载获取待使用的软件源码包smartdenovo-master.zip。
- 将软件源码包上传至已部署鲲鹏DevKit命令行工具的鲲鹏服务器自定义目录下(以“/home/devkit_demo”为例),并进行解压。
cd /home/devkit_demo/ && unzip smartdenovo-master.zip
- 扫描源代码。使用DevKit命令行工具扫描上传源码软件包。
devkit porting src-mig -i /home/devkit_demo/smartdenovo-master -b make -c make
-i:指定待扫描源码的文件夹或压缩包所在路径。
-b:指定构建工具为make。
-c:指定源码的构建命令为make。
返回信息如下,工具会同步生成JSON、CSV、HTML报告和patch文件。

可以直接使用工具生成的patch文件,将patch文件中源码相关的修改应用到源码文件中,更多patch使用方法请参见源码SQL回写patch使用指导。
cd /home/devkit_demo/smartdenovo-master patch -p1 < /home/devkit_demo/Code_Porting_20260XXXXXXXXX_hAsnsZ.patch

- 查看HTML源码迁移报告。
根据迁移报告,确认有两个文件需要修改。检查每个文件的修改建议,并根据建议进行源代码修改。
- 修改源代码。
- 修改Makefile文件。
根据源码迁移报告中Makefile文件的源码处理建议,修改Makefile文件,如图2所示。
根据以上建议,Makefile文件中需要给CFLAGS变量添加选项“-march=armv8.2-a -fsigned-char”,同时,还需要删除CFLAGS变量中的“-mpopcnt”和“-mssse3”选项。获取并安装鲲鹏系统库(BoostKit-ksl安装包)后,在GLIBS变量中添加“-I /usr/local/ksl/include/ -L /usr/local/ksl/lib/ -lavx2ki”。
修改后的代码(修改时进行了x86_64分支和aarch64分支的区分处理),如图3所示。
- 修改ksw.c文件。
根据源码迁移报告中ksw.c文件的源码处理建议修改ksw.c文件,如图4所示。
根据示例建议,需针对x86和AArch64分别设置头文件包含的分支定义,以确保在代码同时适配x86和AArch64两种架构的情况下完成代码的修改,如下所示(以编辑器版本GCC 4.8.5为例)。
新增1 ~ 3行,然后将31行替换为31 ~ 33行内容。
1 #if defined(__aarch64__) 2 #include "avx2ki.h" 3 #endif ... 31 #if defined(__x86_64__) 32 #include <emmintrin.h> 33 #endif
- 修改Makefile文件。
- 运行验证。







