华为 DevKit 25.2.rc1 源码迁移分析使用教程(openEuler + ARM64)

文章目录

    • 一、前言
    • 二、准备工作
      • 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 || true

2. 按依赖顺序安装 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_report

2. 执行分析命令(关键:使用新参数格式)

⚠️ 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.lockRC 版硬编码系统路径使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1136670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统学习MOSFET基本结构与工作逻辑

深入理解MOSFET:从结构到实战的系统性解析你有没有遇到过这样的情况?在设计一个电源电路时,明明选了“大电流”MOSFET,结果一上电就发热严重;或者调试放大器时,增益始终达不到预期——问题可能不在外围电路…

haxm is not installed怎么解决:全面讲解兼容性问题

彻底解决“haxm is not installed”问题:从原理到实战的全链路排查指南 在Android开发中,模拟器是我们日常调试不可或缺的工具。然而,当你满怀期待地点击“Run”按钮时,却弹出一条令人头疼的提示:“ HAXM is not ins…

电网这玩意儿就像走钢丝,随便来个雷击或者设备故障,分分钟给你表演速度和电压的死亡蹦极。但最近咱发现个骚操作——让街边趴着的电动车集体上工当电网保镖

利用插电式电动汽车提高电网暂态稳定性 python联合PSS/E源代码,代码按照高水平文章复现,保证正确 插电式电动汽车(pev)在放电模式下可以作为分布式能源和电力资源,作为车到网(V2G)设备运行;在充电模式下可以作为负载或网到车(G2V)设备运行。 …

通俗解释无源蜂鸣器为何需外部驱动电路

为什么无源蜂鸣器不能直接接单片机?一文讲透驱动原理与电路设计你有没有遇到过这种情况:想用STM32或Arduino控制一个蜂鸣器发出“嘀——”的一声,结果发现有源蜂鸣器能响,换成无源的却一点动静都没有?或者声音微弱、杂…

通用后台权限管理系统源码:Vue-Element前端,Spring Boot后端,支持多终端认...

通用后台权限管理系统源码 前端采用?vue-element-admin。 后端采用 Spring Boot、MySQL、Redis。 权限认证使用 Spring Security & Token,支持多终端认证系统。 支持加载动态权限菜单,多方式轻松权限控制。 高效率开发,使用代码生成器可…

折腾代码编辑器是个技术活,尤其要兼顾灵活性和性能。QScintilla这玩意儿在Qt圈子里算是个隐藏Boss,今天带大伙看看咱魔改的编辑器怎么玩转代码编辑

基于Qt的组件,Qscintilla的代码编辑器。 可有偿提供技术帮助,帮你开发和移植。 支持5种配色方案 本代码自定义的代码编辑器,可应用与任何语言、语法对以下源代码的更新进行说明 [功能] 1.支持自定义快捷键 2.支持自定义皮肤 3.代码高亮&#…

L298N电机驱动H桥电路核心要点:原理图级解析

L298N电机驱动H桥电路深度解析:从原理图到实战调优在机器人、智能小车和自动化设备中,如何让一个直流电机听话地前进、后退、加速或急停?答案往往藏在一个看似简单的黑色模块里——L298N电机驱动板。它背后的核心技术,正是经典的H…

SSH是什么?

SSH(Secure Shell,安全外壳协议) 是一种加密的网络传输协议,用于在不安全的网络(如互联网)中提供安全的远程登录、命令执行和文件传输等服务。它通过加密和身份验证机制,确保数据传输的机密性和…

发票识别自动化:基于CRNN的智能OCR解决方案

发票识别自动化:基于CRNN的智能OCR解决方案 📖 技术背景与行业痛点 在企业财务、税务管理、报销审核等场景中,发票信息提取是高频且重复性极高的任务。传统的人工录入方式不仅效率低下,还容易因视觉疲劳导致错录、漏录。随着AI技术…

相场法,相场模拟,定量相场模型,合金定向凝固模型,基于Karma定量模型,可以用于3D打印、增...

相场法,相场模拟,定量相场模型,合金定向凝固模型,基于Karma定量模型,可以用于3D打印、增材制造、焊接熔池、定向凝固的枝晶生长。 程序通过matlab编写,十分容易上手。最近在研究相场法,特别是定…

Rockchip RK3588中断控制器配置:GICv3在arm64系统中的实践

深入RK3588的神经中枢:GICv3中断控制器在arm64系统中的实战解析你有没有遇到过这样的情况——系统跑着跑着,某个CPU突然飙到100%,而其他核心却“无所事事”?或者设备休眠后按了唤醒键毫无反应,只能硬重启?这…

小理家守护“夕阳红” 撬动千亿AI理疗市场

近两年,银发经济的社会关注度和市场热度不断上升,政策层面也陆续提出支持银发经济发展的一系列措施,全球老龄化联盟执行总监梅丽萨亦在日前关于银发经济的分论坛上指出,全球银发经济价值达22万亿美元。目前,政策与产业…

威纶通触摸屏宏指令分期付款程序(全系列支持)- 12期自动生成密码与锁机时间提示

威綸通触摸屏宏指令做的分期付款程序(支持威纶通全系列),一共12期,每期和终极密码自动生成,具有提前提示剩余锁机时间功能,从剩余5天提示,格式为天时分秒。这个分期锁机程序的核心在于时间计算和…

玩转汽车电子】手把手拆解MPC5634底层驱动黑盒子

NXP MPC5634芯片底层驱动simulink封装库折腾过嵌入式开发的兄弟都知道,汽车电子这行的寄存器配置简直比相亲还麻烦。去年给某主机厂做ECU项目时,笔者被NXP MPC5634的寄存器手册折磨得差点秃头——直到发现了Simulink封装库这个外挂。先看个真实案例&…

IEEE RBTS BUS4标准系统 (roy billinton test system)

IEEE RBTS BUS4标准系统 (roy billinton test system) Matlab/simulink仿真 该模型自己搭建(Matlab 2016a),与标准参数一致,可观测电压,潮流。 还可接入各类故障、DG等最近在折腾电力系统仿真,发现IEEE RBTS BUS4真是个不错的练手…

JFET放大电路耦合方式:电容耦合设计入门详解

JFET放大电路中的电容耦合设计:从原理到实战的完整指南 你有没有遇到过这样的问题——明明每一级放大器单独测试都表现良好,可一旦级联起来,输出信号就失真、漂移,甚至完全“罢工”? 这很可能不是器件选错了&#xff…

2026选产康管理系统,盯紧玄微云这 3 个核心优势准没错

随着“她经济”崛起与健康观念升级,产康行业迎来规模化增长,市场规模年复合增长率稳定在较高水平。与此同时,90后、00后产妇成为消费主力,对服务专业化、流程标准化的需求显著提升,传统人工管理模式已难以适配会员管理…

三菱线割CAMagic: 先进线割软件的强大功能与应用

三菱线割CamMagic线割软件 车间里那台三菱线切割机突然报警了,老师傅叼着烟眯眼看参数表:"这切割路径参数不对啊,再改改。"我盯着CamMagic软件界面发愁——每次手动调参数得浪费两包烟的时间。这时候才发现,会用线割软…

电动汽车高压电机控制器360v平台:开源软件源代码及强大调试工具全套资料

电动汽车高压电机控制器360v乘用车平台,某知名电控厂家主推 产品,软件源代码,软件FOC矢量控制算法,boot源码,全部开源,强大的上位机调试工具带实时波形显示,原理图。 资料完全配套。蹲实验室熬了…

【详解】利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

使用Java解决:利用条件运算符的嵌套来完成成绩等级划分在编程中,条件运算符(也称为三元运算符)是一种简洁的方式来实现条件判断。本文将通过一个具体的例子——根据学生的分数来划分成绩等级,来展示如何在Java中使用条…