鲲鹏云技术开发与应用之代码迁移2048小游戏

1 安装Porting-advisor

使用以下命令下载Portting-advisor的安装包:

cd /home/

gwet https://mirrors.huaweicloud.com/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.2.T2.SPC300_Kunpeng-linux.tar.gz

使用一下命令进行安装即可:

cd /home

tar -zxvf Porting-advisor_2.2.T2.SPC300_Kunpeng-linux.tar.gz

cd /home/Porting-advisor_2.2.T2.SPC200_Kunpeng-linux

./install web

安装完成后,登录porting-advisor,并设置初始密码。

2 检查实验所需代码

使用以下命令下载并解压所需的代码:

cd /home/

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpeng-competition/2048.tar.gz

tar -zxvf 2048.tar.gz

使用cp命令将解压后的文件2048下的文件拷贝到/opt/portadv/portadmin/sourcecode/目录下

备份src目录下的main.c文件,具体如下:

cp src/main.c src/main.c.bk

后期扫描源码时需要有读的权限,因此修改此目录下所有文件的权限,具体命令如下:

chmod -R 755 *

ll

代码迁移
扫描源代码

1 登陆“鲲鹏代码迁移工具”

在本机浏览器中,输入https://弹性云服务器弹性公网地址:8084例如,上面我们获取到的弹性公网IP地址为116.63.104.175,因此,链接为:https:// 116.63.104.175:8084

如果碰到安全问题告警,请点击“高级”,然后选择忽略,继续浏览。

在弹出的页面输入用户名和密码,其中用户名为:portadmin,然后点击“登录”。

登录完成后,鲲鹏代码迁移工具首页如下:

2 设置分析源码参数

在“源码文件存放路径”对话框中,指定需要分析的源码——src和so_src选中后点击即可

按照下图所示设置其它参数,然后点击“开始分析”。

源码类型:C/C++

编译器版本:GCC 7.3

构建工具:make

编译命令:make

目标操作系统:openEuler 20.03

等待源码分析完成后,在页面的右下加,点击“查看报告”进入报告,查看详情

或者在页面右侧历史报告栏点击以时间命名的报告进入,查看详情。

报告分析

在报告中指出,需要迁移的依赖库(so库)为两个,源文件三个,代码12行。

其中,依赖库具体为libhighscore.so和libcurses.so在后面实验中,这两个库需要重新编译。

需要迁移的代码所在的文件分别为main.c及两个Makefile。

切换到“源码迁移建议”中,查看具体情况。

关于Makefile的迁移,系统给出了迁移建议。

汇编代码的迁移需要根据下面的内容进行迁移。

具体需要迁移的代码如下图所示:

代码移植

Makefile移植

修改Makefile文件

在“源码迁移建议”的页签中,找到Makefile的路径(由于两个Makefile需要修改的内容一致,因此只做一次步骤描述)。

按照提示进入该路径,进行Makefile的修改,命令如下:

cd /opt/portadv/portadmin/sourcecode/src

vim Makefile

 

按照工具的提示,添加对应的参数,具体如下:

修改完成后保存该文件

重复1,修改/opt/portadv/portadmin/sourcecode/so_src下的Makefile汇编代码移植

修改main.c文件

同样在“源码迁移建议”的页签中,找到main.c的路径。

按照提示进入该路径,进行main.c的修改,命令如下:

cd /opt/portadv/portadmin/sourcecode/src

vim main.c

按照胶片50页内容,对main.c中的汇编代码进行修改,具体如下:

删除#后的源代码,然后增加适用于鲲鹏平台的、相同功能的汇编代码。

"mrs %0, midr_el1"

: "=r"(s1)

:

:"memory"

修改后的文件如下:

编译测试

移植后代码编译

1、依赖库重新编译

进入so_src目录下,使用make命令对程序所需的依赖库进行重新编译,命令如下:

cd /opt/portadv/portadmin/sourcecode/so_src

make

下图为正常运行后所示:

如出现告错,请仔细排查后重新编译。

2 、源代码编译

进入源代码主目录,使用make命令对应用进行重新编译,命令如下:

cd /opt/portadv/portadmin/sourcecode

make

下图为正常运行后所示:

如出现告错,请仔细排查后重新编译。

使用以下命令修改依赖库环境变量:

export LD_LIBRARY_PATH=/opt/portadv/portadmin/sourcecode/lib:$LD_LIBRARY_PATH

运行测试

运行程序

在/opt/portadv/portadmin/sourcecode目录下使用下面命令运行程序:

./2048

下图为正常运行后所示:

键盘W/S/D/A分别对应上下左右,检查是否能正常操作,并且查看Score和Hi,是否变化。

使用q健退出,检查是否有以下提示:

其中“最高分”为so库运行的结果,CPU id为汇编代码运行结果,如果能正常显示,则证明迁移完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值