基于香橙派鲲鹏Pro开发板及鲲鹏代码迁移工具的源码迁移
发表于 2025/06/26
0
作者|楼佳明
1.案例介绍
1.1案例简介
本案例介绍如何在香橙派鲲鹏Pro开发板上通过鲲鹏代码迁移工具Porting Advisor完成源码迁移。待迁移的源码项目是用JAVA语言编写的可以运行在x86平台的“即时交流平台”后端项目。JAVA语言虽然是跨平台的,编写的程序,通常不需要修改源码,因为JAVA编译生成的.CLASS文件由JAVA虚拟机解释执行。不过本案例使用的“即时交流平台”后端项目中调用了编译型语言(C/C++)编写的so库函数,所以需要完成迁移才能在鲲鹏平台上运行。人工迁移费时费用,本案例通过鲲鹏应用迁移工具自动分析项目源码并可以自动生成替换代码,让开发者体验极致的迁移效率。
香橙派鲲鹏Pro开发板采用4核64位处理器+AI处理器,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。香橙派鲲鹏 Pro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口等。香橙派鲲鹏 Pro支持openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求,同时可以为各种应用场景提供更高效的算力,如云计算、大数据、分布式存储、高性能计算等。更多使用说明参考官方文档。
鲲鹏开发套件Porting Advisor能够全面对代码进行扫描,识别其中的移植项,并给出指导性的建议,极大简化迁移过程,加速迁移进度。更多使用说明参考官网文档。
1.2关于本案例环境
本案例基于香橙派鲲鹏 Pro开发板上的鲲鹏处理器和openEuler操作系统。openEuler是一款支持多样性设备、覆盖全场景应用、具有完整开发工具链的面向数字基础设施的开源Linux操作系统,支持x64和arm64等多种处理器架构,更是鲲鹏处理器天然的基础软件设施。有关openEuler的详细介绍和资源可以参考如下网址:
有关鲲鹏硬件更多的资料可以参考鲲鹏论坛。
案例设备关键配置如下图所示:
资源 |
规格 |
香橙派鲲鹏pro开发板1台、网线和HDMI线各1根 |
开发板:4核鲲鹏CPU,16G内存 |
个人pc |
需要可以和开发板正常连接 |
键盘、鼠标、显示器 |
一套 |
用户及密码 |
root用户对应密码(openEuler) |
2.案例环境搭建
请参考手把手教你搭建香橙派鲲鹏Pro开发环境完成开发板连接及登录。
3.完成代码迁移
3.1 任务一:完成鲲鹏代码迁移工具的部署及登录
步骤 1 升级java环境登录到ssh远程连接终端中,输入以下命令。(注:本案例所有命令皆在命令行终端中执行)
yum install java-1.8.0-openjdk
步骤 2 下载源码
cd /home
wget -c --no-check-certificate https://mirror.iscas.ac.cn/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.5.T30_linux-Kunpeng.tar.gz
步骤 3 解压源码
tar -zxvf Porting-advisor_2.5.T30_linux-Kunpeng.tar.gz
步骤 4 安装迁移工具web模式
进入目录。
cd Porting-advisor_2.5.T30_linux-Kunpeng
执行安装脚本进行安装。
./install web
在安装过程中,根据提示需要输入回车键或者输入“y”回车。除了提示(y/n)?的输入y, 其它全部输入回车键。
如:


登录到图形化操作系统中。(注:本案例所有图形化桌面操作皆需登录到开发板的图形化操作系统中)
打开火狐浏览器,在浏览器地址栏输入https://开发板的ip:端口号/porting/#/login
注:如果没有自己修改过开放板ip, 默认链接为https://192.168.10.8:8084/porting/#/login。



设置密码后,输入密码,点击登录即可。
登录成功后的界面如下图所示。
3.2 任务二:使用鲲鹏代码迁移工具修改源码
步骤 1 下载待迁移的源码
从codehub下载源码,并放置源码包到迁移工具目录。cd /home/
git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/kpcxsj00002/IMSystem.git
cd /home/IMSystem/src/main/resources
cp -r nativecode/ /opt/portadv/portadmin/sourcecode/nativecode
cd /opt/portadv/portadmin/sourcecode/
chown -R porting:porting nativecode/
步骤 2 设置配置
按照任务一中的步骤登录鲲鹏代码迁移工具Web界面。
选择“源码迁移”标签,源码文件存放路径选择nativecode目录。


分析完成后,在界面右侧的历史报告中会生成的分析报告。
点击生成的报告。
文件列表中显示了需要迁移的文件,红色波浪线标记了需要迁移的代码段。
鼠标悬浮在第一段需要修改的代码上(红色波浪线处),单击“Quick FIX”。



步骤 5 添加头文件
由于自动生成的代码中有用到KunpengTrans.h头文件,需要将其复制到nativecodde目录下。
执行以下命令进行copy。
cp /opt/portadv/tools/inline_asm/config/KunpengTrans.h /opt/portadv/portadmin/sourcecode/nativecode
3.3 任务三:编译代码生成动态库
步骤 1 进入到代码所在目录cd /opt/portadv/portadmin/sourcecode/nativecode
步骤 2 查看当前目录文件
ll
可以看到当前目录下的所有文件,注意到被修改的文件solution.cpp已经有了备份*.bak.0。

在命令行中依次输入:
mkdir build
cd build/
pwd
步骤 4 尝试编译
在命令行中输入如下内容:(如果没有cmake,需要yum install cmake)cmake ..
make
make install
发现在make时,编译出现如下错误:

步骤 5 修改cmake配置文件
在命令行中输入:
vim ../CMakeLists.txt
切换到小写输入模式,可以用“h、j、k、l”或者方向键移动光标,移动到如下图所示位置,按“o”键再下方添加新行,进入编辑模式。
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
add_compile_options(-march=armv8-a+crc)
endif()
编辑完成后,按“ESC”键退出编辑模式,再依次输入“:”、“w”、“q”,最后回车保存并退出文档。
步骤 6 再次编译在命令行中输入:
cd /opt/portadv/portadmin/sourcecode/nativecode/build
rm -rf *
cmake ..
make
make install
注意:这一步请确保工作目录是build文件夹,可以通过pwd命令查看。
清除之前的编译中间文件后,重新按照步骤5执行,这时候编译过程没有问题。步骤 7 查看编译安装结果

在命令行中输入:
ll /lib64/libMyJni.so
从下图可以看到,动态库文件已经在在目标目录中了,至此编译安装结束,迁移任务完成。

4.更多学习资源
更多学习内容和资源请扫码报名参加“鲲鹏技术学习加油站”及浏览鲲鹏开发板专区。
1)香橙派鲲鹏Pro开发板技术学习加油站:
2)香橙派鲲鹏Pro开发板专区二维码: