附录 A

怎样使用qemu-aarch64-static来运行arm64架构的程序

在安装完QEMU后,常常是缺少qemu-arm之类的工具的,我们可以使用qemu-user-static来代替,安装方式如下:

$ sudo apt install qemu-user-static

安装完成之后,可以发现在/usr/bin目录下有一系列的qemu-*-static的应用。

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

每一个应用针对一种特定的硬件平台。接下来已我常用的aarch64平台来进行示范。

首先编写一个简单的hello world程序,显示出当前输入的参数个数以及最后一个参数,代码如下:

#include <iostream>

int main(int argc, char* argv[]){
    std::cout << "Hello World!" << std::endl;
    std::cout << "argc: " << argc << "\nthe final argument is:"<< argv[argc -1] << std::endl;
    return 0;
}

将源码编译成arm64的二进制程序,使用file工具读取二进制文件的属性,确定其为ARM aarch64架构的程序:

$ file hello_world 
arm_test: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 4.9.0, with debug_info, not stripped

在Ubuntu下直接运行aarch64架构的程序:

$ qemu-aarch64-static -L /usr/aarch64-linux-gnu/ arm_test
Hello World!
argc: 1
the final argument is:arm_test

其中-L参数指定了适用于aarch64架构程序的库文件路径。 输入多个参数给到应用程序,测试结果如下:

$ qemu-aarch64-static -L /usr/aarch64-linux-gnu/ arm_test first last
Hello World!
argc: 3
the final argument is:last

arm-test 测试程序下载路径: https://pan.baidu.com/s/1BcY0199ShdjA48Ed7V6SAQ 提取码: eta6

本教程测试使用的第一个QNX镜像

x86_64.hd测试进行下载路径:https://pan.baidu.com/s/18KDhc00DQM3Vghz0druUOQ 提取码: 7q96 (7天有效期)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言北万

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值