示例1:64位运行模式检查
本示例主要是演示如何使用鲲鹏DevKit亲和分析工具的64位迁移预检功能,将x86平台GCC 4.8.5~GCC 10.3.0版本原32位的应用迁移到64位平台上,进行迁移检查并给出修改建议。
- 从Github或Gitee代码样例获取待使用的软件源码包。
下载的源码包为devkitdemo-main.zip,解压后的“./devkitdemo/Porting_advisor/testdemo/precheck/”为源码迁移的待扫描代码。
- 进入鲲鹏DevKit,在左侧列表中单击“亲和分析 > 64位运行模式检查”进入64位运行模式检查任务创建页面。
在随后出现的相关配置项和按钮中,单击“上传”,上传precheck源码包。
单击输入框,选择源代码存放路径为“/opt/DevKit/workspace/devadmin/affinity/precheck/”,如图1所示。
- 单击“开始检查”,分析完成后单击报告页面的“源码修改建议”或对应源码文件右侧的“查看建议源码”,如图2所示。
本示例以扫描precheck文件夹为例,扫描结果显示32-64平台进行迁移需要进行修改的代码行,如表1所示。
表1 扫描结果 文件
代码行
处理建议
修改后的代码
func001.c
第26行char a = m;
Suggestion: // This line needs to be adapted for the 64-bit environment.
char a = (char)m;
func001.c
第28行c = c+i;
c = (char)((int)c +i);
func002.c
第26行c = p;
c = (char *)p;
func003.c
第23行unsigned char *s = c;
unsigned char *s = (unsigned char *)c;
func004.c
第25行int q = &a;
long int q = (long)&a;
func004.c
第28行p = &a;
long int p;//修改第26行
p = (long)&a;
func004.c
第30行test = s;
long int test = 10;//修改第22行
test = (long)s;
- 对各个代码行进行修改,重新扫描源码,出现如图3所示。
- 对原始文件执行make,结果如图4所示。
按照要求进行修改后,重新执行make,结果如图5所示。
从中可以看出和32-64迁移相关的warning信息已经全部清除。