应用迁移工具是针对鲲鹏平台的开发者、用户和ISV开发者的应用迁移工具,用于将x86 Linux软件迁移到鲲鹏Linux系统。该工具可自动扫描、分析并输出指导报告,极大提高了代码迁移效率。
表1 任务描述任务分类
|
描述
|
软件迁移评估
|
自动扫描并分析软件包(非源码包)、已安装的软件,提供可迁移性评估报告。
- 检查用户软件包(RPM、DEB、TAR、ZIP、GZIP等文件)中包含的SO(Shared Object)依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。
- 检查用户Java类软件包(JAR、WAR、EAR)中包含的SO依赖库和二进制文件,并评估SO依赖库和二进制文件的可迁移性。
- 检查指定的用户软件安装路径下的SO依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。
|
源码迁移
|
检查分析C/C++/ASM/Fortran/Go/解释型语言等源码文件,定位出需迁移代码并给出迁移指导,支持迁移编辑及一键代码替换功能。
- 检查用户C/C++/ASM/Fortran/Go软件构建工程文件,并指导用户如何迁移该文件。
- 检查用户C/C++/Fortran/Go/解释型语言软件构建工程文件使用的链接库,并提供可迁移性信息。
- 检查用户C/C++/ASM/Fortran/Go/解释型语言软件源码,并指导用户如何迁移源文件。其中,Fortran源码支持从Intel Fortran编译器迁移到GCC Fortran编译器,并进行编译器支持特性、语法扩展的检查。
- 检查用户Python/Java/Scala程序通过ctypes模块加载的SO文件的兼容性。
- x86汇编指令转换,分析部分x86汇编指令,并转换成功能对等的鲲鹏汇编指令。
|
软件包重构
|
在鲲鹏平台上,分析待迁移软件包构成,重构并生成鲲鹏平台兼容的软件包,或直接提供已迁移了的软件包。
|
使用限制
表2 使用限制任务分类
|
描述
|
构建文件
|
- CMake解析中的Find功能依赖GCC编译结果,编译选项中有x86特有编译选项如-m64时,如果工具运行环境是鲲鹏环境,CMake无法顺利解析,无法检出相应的内容。
- Makefile支持$(shell shell_command)形式的shell指令,但不支持直接使用shell脚本作为构建配置文件。
|
C/C++代码分析
|
工具运行环境中缺少用户自定义宏头文件、第三方头文件、某些系统头文件场景下,会影响相关宏的修改点检出,无法给出精确建议。
|
Intrinsic函数
|
Intel协处理器相关的130多个Intrinsic函数无法给出准确替换建议。
|
汇编指令
|
- 存在以下场景时,仅能提示用户注意转换代码的使用,不能提示100%精确的修改建议:
- 当函数存在参数的时候,提示可能存在特殊结构导致函数转换出错。
- 将栈上的数据入栈传参时,默认该参数为整型。
- 存在以下场景时无法支持100%准确的自动转换,仅能提示需要手动转换:
- goto语句、call语句和ret语句
- 使用段寄存器或未赋值的物理寄存器
- 访问全局符号
- 输入输出的变量位宽大于128位
- 输入输出的全局变量大于21个
- 指令的位宽与变量位宽不一致
- 使用intel和AT&T混合的汇编格式
- 汇编存在语法错误
|