开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

快速入门(源码迁移)

本文以源码迁移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工具

本文档适用于DevKit兼容性查询助手中的OS版本。

在CLI工作模式下,源码迁移功能包含在应用迁移工具包里面,需要安装应用迁移工具包。

  1. 获取软件包。
    1. 进入鲲鹏DevKit下载页。
    2. 筛选参数,“服务器架构”请根据实际环境选择,“平台”选择“CLI”,“开发阶段”选择“快速迁移”,“功能特性”选择“源码迁移”。

    3. 根据“版本号”选择适用版本,以鲲鹏平台为例,展开下载“命令行框架RPM包”和“应用迁移RPM包”。

  2. 将获取的软件包上传至服务器的自定义目录下(以“/home/DevKit”为例)。
  3. 安装框架包和应用迁移功能包。
    1
    rpm -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
    
  4. 验证是否安装成功。
    1
    rpm -qa | grep devkit
    

    若回显中有已安装包名则安装成功。

    1
    devkit version
    

    返回信息如下:

    1
    devkit version x.x.x
    

使用源码迁移扫描软件包

以开源软件smartdenovo-master迁移到鲲鹏平台为例,指导用户快速扫描分析x86软件包,定位需迁移代码,按照建议修改源代码,完成软件迁移。

  1. 获取源代码。从GitHub下载获取待使用的软件源码包smartdenovo-master.zip。
  2. 将软件源码包上传至已部署鲲鹏DevKit命令行工具的鲲鹏服务器自定义目录下(以“/home/devkit_demo”为例),并进行解压。
    cd /home/devkit_demo/ && unzip smartdenovo-master.zip
  3. 扫描源代码。使用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

  4. 查看HTML源码迁移报告。
    单击源码迁移报告中“需迁移的代码行”中“处理建议”列的“展开”按钮,如图1所示。
    图1 查看建议源码

    根据迁移报告,确认有两个文件需要修改。检查每个文件的修改建议,并根据建议进行源代码修改。

  5. 修改源代码。
    1. 修改Makefile文件。

      根据源码迁移报告中Makefile文件的源码处理建议,修改Makefile文件,如图2所示。

      图2 Makefile文件源码迁移建议

      根据以上建议,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所示。

      图3 修改后的Makefile
    2. 修改ksw.c文件。

      根据源码迁移报告中ksw.c文件的源码处理建议修改ksw.c文件,如图4所示。

      图4 ksw.c文件源码迁移建议

      根据示例建议,需针对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
  6. 运行验证。
    1. 进入源码所在目录,执行以下命令进行编译,如图5所示。若编译失败请参考故障案例。
      1
      make clean && make
      
      图5 make命令
    2. 编译成功后,执行以下命令进行安装,并检查安装结果,如图6所示。
      1
      make install
      
      图6 检查安装结果

      以上表明,SmartDenovo已编译安装到鲲鹏平台上。

更多功能