文章目录
- 一、前言
- 二、准备工作
- 1. 下载所需 RPM 包
- 2. 准备待分析项目
- 三、安装 DevKit
- 1. 卸载旧版本(如有)
- 2. 按依赖顺序安装 RPM 包
- 四、运行源码迁移分析
- 1. 创建输出目录
- 2. 执行分析命令(关键:使用新参数格式)
- 3. 等待分析完成
- 五、查看分析报告
- 1. 报告文件列表
- 3. 报告内容解读
- 六、常见问题与解决方案
- 七、后续建议
- 1. 升级到正式版
- 2. 修改代码并验证
- 八、附录:完整命令速查
- 总结
一、前言
华为 DevKit 是一款用于 x86 → 鲲鹏(ARM64)平台代码迁移分析 的工具。从 v25.0 起,DevKit 采用 模块化 RPM 包设计 ,需安装多个组件才能使用源码迁移功能。本次实验我带大家实操一下码迁移分析使用,实验有以下几点需要注意。
⚠️ 注意 :
- 25.2.rc1 为 Release Candidate 版本 ,存在权限和参数接口变更问题。
- 正式版(如 25.1.0)体验更佳,建议实验完成后升级。
- 本次实验是在华为云开发者空间上进行的,点击进入https://developer.huaweicloud.com/space/devportal/platform/devEnvironment?tab=cloud_desktop&ticket=ST-8160487-KjIyCRlHrKoolUkIbqrfPb59-sso&locale=zh-cn
二、准备工作
1. 下载所需 RPM 包
确保已下载以下三个包(架构:aarch64):
devkit-25.2.rcll-1.aarch64.rpm devkit-porting-25.2.rc1-1.aarch64.rpm # 必须!提供迁移分析能力 devkit-sys-mig-25.2.rc1-1.aarch64.rpm # 可选(本次实验不需要)💡 若未下载,请从 华为鲲鹏社区 获取。
2. 准备待分析项目
以开源项目simdjson为例:
cd ~ git clone https://github.com/simdjson/simdjson.git项目路径:/home/developer/simdjson
三、安装 DevKit
1. 卸载旧版本(如有)
sudo rpm -e devkit devkit-porting devkit-sys-mig 2>/dev/null || true2. 按依赖顺序安装 RPM 包
# 进入 RPM 所在目录(假设在 ~/Downloads) cd ~/Downloads # 安装主框架 sudo rpm -ivh devkit-25.2.rc1-1.aarch64.rpm # 安装源码迁移模块(关键!) sudo rpm -ivh devkit-porting-25.2.rc1-1.aarch64.rpm # (可选)安装系统迁移模块 # sudo rpm -ivh devkit-sys-mig-25.2.rc1-1.aarch64.rpm✅ 验证安装:
/usr/local/devkit/devkit --version
四、运行源码迁移分析
1. 创建输出目录
mkdir -p /home/developer/migration_report2. 执行分析命令(关键:使用新参数格式)
⚠️ DevKit 25.2.rc1 参数变更 :
--project-path→--input或-i--output-path→--output或-o--language→--source-type
sudo devkit porting src-mig \ --input /home/developer/simdjson \ --output /home/developer/migration_report \ --source-type c,c++🔍 为什么用
sudo?
RC 版本硬编码日志路径为/usr/local/devkit/...,普通用户无写权限。
正式版默认使用$HOME/.kunpeng-devkit,无需sudo。
3. 等待分析完成
典型输出:
Using the local system as target os: openeuler22.03 Current progress: [100%] [Phase 3/3] Scan completed. Generating reports. ... Files to be modified: 30 Lines to be modified: 204 Estimated transplant workload: 0.5 person/months.五、查看分析报告
1. 报告文件列表
ls ~/migration_report/生成三个文件:
Code_Porting_ .html← 主报告(推荐)Code_Porting_ .csv← 表格数据Code_Porting_ .json← 原始数据
3. 报告内容解读
| 类别 | 说明 |
|---|---|
| 架构相关指令 | x86 汇编(如_mm_load_si128)、SSE/AVX 内建函数 |
| 编译器差异 | GCC/Clang 特有扩展在 ARM64 上的兼容性 |
| 字节序与对齐 | 大端/小端、内存对齐问题 |
| 依赖库兼容性 | 第三方库是否支持 ARM64 |
六、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
error: init execute pwd failed | 未安装devkit-porting | 安装devkit-porting- .rpm |
Permission denied: common.log.lock | RC 版硬编码系统路径 | 使用sudo运行 |
The task name is incorrect | 未指定子任务 | 使用devkit porting src-mig ... |
required: -i/--input | 参数格式变更 | 将--project-path改为--input |
| SELinux 阻止写入 | 安全策略限制 | 临时执行sudo setenforce 0 |
七、后续建议
1. 升级到正式版
卸载 RC 版:
sudo rpm -e devkit devkit-porting devkit-sys-mig下载并安装 DevKit 25.1.0 正式版 ,享受:
- 无需
sudo - 自动使用
$HOME/.kunpeng-devkit - 更稳定的 CLI 接口
2. 修改代码并验证
根据报告提示:
- 替换 x86 内建函数为 ARM NEON 等价实现
- 添加跨平台宏(如
#ifdef __aarch64__) - 在鲲鹏服务器上编译测试
八、附录:完整命令速查
# 安装 sudo rpm -ivh devkit-*.rpm devkit-porting-*.rpm # 分析(RC 版必须用 sudo + 新参数) sudo devkit porting src-mig \ --input /path/to/source \ --output /path/to/report \ --source-type c,c++ # 归还权限 sudo chown -R $USER:$USER /path/to/report # 查看帮助 devkit porting src-mig --help总结
作为一个开发者,在 openEuler ARM64 环境下使用 DevKit 25.2.rc1 进行源码迁移分析时,需特别注意其 RC 版本的限制:必须安装devkit-porting模块,且因日志路径硬编码于系统目录,普通用户无写权限, 需用sudo执行 。同时,CLI 参数已变更——--project-path改为--input,--language改为--source-type。虽然流程略显繁琐,但工具能精准识别 x86 专属指令(如 SSE/AVX)、内存对齐等问题,并生成 HTML 报告,极大提升 ARM64 移植效率。建议实验后升级至正式版以获得更友好的开发体验。
鲲鹏社区直达https://www.hikunpeng.com/developer?utm_campaign=com&utm_source=csdnkol