示例1:64位运行模式检查
本示例主要是演示如何使用鲲鹏DevKit亲和分析工具的64位迁移预检功能,将x86平台GCC 4.8.5~GCC 10.3.0版本原32位的应用迁移到64位平台上,进行迁移检查并给出修改建议。
- 从Github或Gitee代码样例获取待使用的软件源码包。
下载的源码包为devkitdemo-main.zip,解压后的“./devkitdemo-main/Porting_advisor/testdemo/precheck/”为64位运行模式检查的待扫描代码。
- 进入鲲鹏DevKit,在左侧列表中单击“亲和分析 > 64位运行模式检查”进入64位运行模式检查任务创建页面。
- 将precheck文件夹上传到服务器上的“/opt/DevKit/workspace/devadmin/affinity/precheck/”下,单击源码文件存放路径的填写框,选择precheck下拉项。
- 鼠标悬浮到“上传”,选择“压缩包”(上传过程中自动解压)或“文件夹”。
- 单击“开始检查”,分析完成后单击报告页面对应源码文件右侧的“查看建议源码”,如图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 代码修改
- 单击当前任务名称右侧的
按钮进行重启任务操作。出现如图4图4所示。
- 对原始文件执行make,结果如图5所示。
按照要求进行修改后,重新执行make,结果如图6所示。
从中可以看出和32位->64位迁移相关的warning信息已经全部清除。
父主题: 亲和分析工具