searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用qemu运行用户态异构程序

2024-09-02 09:51:06
10
0

背景

在研发的过程中,我们经常发现我们的研发机器跟实际程序运行的机器的架构是不同的,这时候我们可以使用qemu-user-static包来运行、调试异构的程序。

方案

例如:我现在的是一个aarch64的linux机器,我开发了一个mips32的打印hello的程序。

➜  ~ uname -a
Linux ubuntu-linux-22-04-02-desktop 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:30:28 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
➜  ~ file ./main
./main: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, Go BuildID=jf3KvcC7wGWktQduCQ5r/9LA77qYZ5Ife0UELcJao/ac9VC_o1NkJi4dHc_lUo/lLqAyTKDzQcDhLcLNciN, stripped

首先通过apt安装qemu-user-static包

apt install qemu-user-static

安装完成后可以看到支持各种架构的qemu模拟程序:

➜  ~ ls /usr/bin/qemu-*-static
/usr/bin/qemu-aarch64-static     /usr/bin/qemu-cris-static     /usr/bin/qemu-microblaze-static    /usr/bin/qemu-mipsel-static     /usr/bin/qemu-ppc-static      /usr/bin/qemu-s390x-static        /usr/bin/qemu-sparc64-static
/usr/bin/qemu-aarch64_be-static  /usr/bin/qemu-hexagon-static  /usr/bin/qemu-microblazeel-static  /usr/bin/qemu-mipsn32-static    /usr/bin/qemu-ppc64-static    /usr/bin/qemu-sh4-static          /usr/bin/qemu-x86_64-static
/usr/bin/qemu-alpha-static       /usr/bin/qemu-hppa-static     /usr/bin/qemu-mips-static          /usr/bin/qemu-mipsn32el-static  /usr/bin/qemu-ppc64le-static  /usr/bin/qemu-sh4eb-static        /usr/bin/qemu-xtensa-static
/usr/bin/qemu-arm-static         /usr/bin/qemu-i386-static     /usr/bin/qemu-mips64-static        /usr/bin/qemu-nios2-static      /usr/bin/qemu-riscv32-static  /usr/bin/qemu-sparc-static        /usr/bin/qemu-xtensaeb-static
/usr/bin/qemu-armeb-static       /usr/bin/qemu-m68k-static     /usr/bin/qemu-mips64el-static      /usr/bin/qemu-or1k-static       /usr/bin/qemu-riscv64-static  /usr/bin/qemu-sparc32plus-static

最后我们使对应架构的qemu模拟器运行我们的异构程序,可以看到程序正常运行打印了 预期的hello。

➜  ~ qemu-mips-static main
hello#

总结

利用qemu可以可以快速验证我们的异构程序。

0条评论
作者已关闭评论
罗****鹤
5文章数
0粉丝数
罗****鹤
5 文章 | 0 粉丝
原创

使用qemu运行用户态异构程序

2024-09-02 09:51:06
10
0

背景

在研发的过程中,我们经常发现我们的研发机器跟实际程序运行的机器的架构是不同的,这时候我们可以使用qemu-user-static包来运行、调试异构的程序。

方案

例如:我现在的是一个aarch64的linux机器,我开发了一个mips32的打印hello的程序。

➜  ~ uname -a
Linux ubuntu-linux-22-04-02-desktop 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:30:28 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
➜  ~ file ./main
./main: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, Go BuildID=jf3KvcC7wGWktQduCQ5r/9LA77qYZ5Ife0UELcJao/ac9VC_o1NkJi4dHc_lUo/lLqAyTKDzQcDhLcLNciN, stripped

首先通过apt安装qemu-user-static包

apt install qemu-user-static

安装完成后可以看到支持各种架构的qemu模拟程序:

➜  ~ ls /usr/bin/qemu-*-static
/usr/bin/qemu-aarch64-static     /usr/bin/qemu-cris-static     /usr/bin/qemu-microblaze-static    /usr/bin/qemu-mipsel-static     /usr/bin/qemu-ppc-static      /usr/bin/qemu-s390x-static        /usr/bin/qemu-sparc64-static
/usr/bin/qemu-aarch64_be-static  /usr/bin/qemu-hexagon-static  /usr/bin/qemu-microblazeel-static  /usr/bin/qemu-mipsn32-static    /usr/bin/qemu-ppc64-static    /usr/bin/qemu-sh4-static          /usr/bin/qemu-x86_64-static
/usr/bin/qemu-alpha-static       /usr/bin/qemu-hppa-static     /usr/bin/qemu-mips-static          /usr/bin/qemu-mipsn32el-static  /usr/bin/qemu-ppc64le-static  /usr/bin/qemu-sh4eb-static        /usr/bin/qemu-xtensa-static
/usr/bin/qemu-arm-static         /usr/bin/qemu-i386-static     /usr/bin/qemu-mips64-static        /usr/bin/qemu-nios2-static      /usr/bin/qemu-riscv32-static  /usr/bin/qemu-sparc-static        /usr/bin/qemu-xtensaeb-static
/usr/bin/qemu-armeb-static       /usr/bin/qemu-m68k-static     /usr/bin/qemu-mips64el-static      /usr/bin/qemu-or1k-static       /usr/bin/qemu-riscv64-static  /usr/bin/qemu-sparc32plus-static

最后我们使对应架构的qemu模拟器运行我们的异构程序,可以看到程序正常运行打印了 预期的hello。

➜  ~ qemu-mips-static main
hello#

总结

利用qemu可以可以快速验证我们的异构程序。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0