更新时间:2022-03-03 GMT+08:00
分享

实现原理

鲲鹏代码迁移工具的架构如图1所示。

图1 鲲鹏代码迁移工具架构
表1 鲲鹏代码迁移工具模块介绍

模块名

功能

Nginx

开源第三方组件,在Web方式下需要安装部署。

处理用户前端的HTTPS请求,向前端提供静态页面,或者向后台传递用户输入数据,并将扫描结果返回给用户。

Django

开源第三方组件,在Web方式下需要安装部署。

Django是RESTful框架,将HTTP请求转换成RESTful API并驱动后端功能模块。同时Django提供用户认证、管理功能。

Main Entry

命令行方式入口。

负责解析用户输入参数,并驱动各功能模块完成用户指定的作业。

依赖库白名单检查

根据“用户软件包扫描”输入的SO文件列表,对比SO依赖库白名单,得到所有SO库的详细信息。

C/C++/Fortran源码检查

扫描分析用户软件目标二进制文件依赖的源文件集合,根据编译器版本信息,检查源码中使用的架构相关的编译选项、编译宏、builtin函数、attribute、用户自定义宏等,确定需要迁移的源码及源文件。包括:

  • 软件构建配置文件检查
  • C/C++源码检查,其中Fortran语言支持Fortran77,Fortran90,Fortran95,Fortran03等版本
  • x86汇编代码检查和转换代码建议(支持有限场景下常见的数据处理,加载,存储指令)

编译器检查

根据编译器版本确定x86与鲲鹏平台相异的编译宏、编译选项、builtin函数、attribute等列表。

用户软件迁移指导

  1. 根据编译依赖库检查和C/C++/Fortran源码扫描结果合成用户软件迁移建议报告(csv或html格式)。
  2. 输出软件迁移概要信息到终端。

专项软件迁移

根据积累的基于解决方案分类的软件迁移方法汇总。

软件包重构

对用户x86软件包进行重构分析,产生适用鲲鹏平台的软件包。

64位运行模式检查

将原32位平台上的软件迁移到64位平台上,进行迁移检查并给出修改建议。

结构体字节对齐检查

在需要考虑字节对齐时,检查源码中结构体类型变量的字节对齐情况。

分享:

    相关文档

    相关产品

close