实现原理
鲲鹏代码迁移工具的架构如图1所示。
模块名 |
功能 |
---|---|
Nginx |
开源第三方组件,在Web方式下需要安装部署。 处理用户前端的HTTPS请求,向前端提供静态页面,或者向后台传递用户输入数据,并将扫描结果返回给用户。 |
Django |
开源第三方组件,在Web方式下需要安装部署。 Django是RESTful框架,将HTTP请求转换成RESTful API并驱动后端功能模块。同时Django提供用户认证、管理功能。 |
Main Entry |
命令行方式入口。 负责解析用户输入参数,并驱动各功能模块完成用户指定的作业。 |
依赖库白名单检查 |
根据“用户软件包扫描”输入的SO文件列表,对比SO依赖库白名单,得到所有SO库的详细信息。 |
C/C++/Fortran源码检查 |
扫描分析用户软件目标二进制文件依赖的源文件集合,根据编译器版本信息,检查源码中使用的架构相关的编译选项、编译宏、builtin函数、attribute、用户自定义宏等,确定需要迁移的源码及源文件。包括:
|
编译器检查 |
根据编译器版本确定x86与鲲鹏平台相异的编译宏、编译选项、builtin函数、attribute等列表。 |
用户软件迁移指导 |
|
专项软件迁移 |
根据积累的基于解决方案分类的软件迁移方法汇总。 |
软件包重构 |
对用户x86软件包进行重构分析,产生适用鲲鹏平台的软件包。 |
64位运行模式检查 |
将原32位平台上的软件迁移到64位平台上,进行迁移检查并给出修改建议。 |
结构体字节对齐检查 |
在需要考虑字节对齐时,检查源码中结构体类型变量的字节对齐情况。 |
