在QEMU中测试执行程序相关错误问题处理

2024-02-08 05:28

本文主要是介绍在QEMU中测试执行程序相关错误问题处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、编写可执行程序,拷贝到开发板中运行

[root@myQEMU ]# mount -t nfs -o nolock 192.168.1.128:/home/hudahua/workspace /mnt
[root@myQEMU ]# cp /mnt/test/project/main .[root@myQEMU ]# ./main
-/bin/sh: ./main: not found
[root@myQEMU ]#

出现“-/bin/sh: 命令:not found”,主要是因为系统缺少某些库文件导致的。
查找交叉编译器相关的libc库文件

hudahua@wiat:~/workspace/tools/aarch64-linux-gnu-8.3$ find -name *.so
./aarch64-linux-gnu/libc/lib64/libpthread-2.28.so
./aarch64-linux-gnu/libc/lib64/libpcprofile.so
./aarch64-linux-gnu/libc/lib64/libanl-2.28.so
./aarch64-linux-gnu/libc/lib64/libm-2.28.so
./aarch64-linux-gnu/libc/usr/lib64/libanl.so
./aarch64-linux-gnu/libc/usr/lib64/libitm.so
./aarch64-linux-gnu/libc/usr/lib64/libBrokenLocale.so
./aarch64-linux-gnu/libc/usr/lib64/libcrypt.so
./aarch64-linux-gnu/libc/usr/lib64/libm.so
./aarch64-linux-gnu/libc/usr/lib64/librt.so

2、拷贝交叉编译工具的库文件

拷贝lib库相关文件至lib目录,支持动态编译的应用程序运行

hudahua@wiat:~/workspace/rootfs/busybox-1.31.0$ cd _install/
hudahua@wiat:~/workspace/rootfs/busybox-1.31.0/_install$ cp ~/workspace/tools/aarch64-linux-gnu-8.3/aarch64-linux-gnu/libc/* . -rfhudahua@wiat:/mnt$ sudo cp ~/workspace/tools/aarch64-linux-gnu-8.3/aarch64-linux-gnu/libc/* . -rf
cp: 写入 './usr/lib64/libc.a' 时出错: 设备上没有空间
cp: 写入 './usr/lib64/libc_nonshared.a' 时出错: 设备上没有空间
cp: 写入 './usr/lib64/liblsan.so.0.0.0' 时出错: 设备上没有空间
cp: 写入 './usr/lib64/crtn.o' 时出错: 设备上没有空间
cp: 写入 './usr/lib64/libatomic.so.1.2.0' 时出错: 设备上没有空间

rootfs分配空间不足

3、重新分配rootfs空间

hudahua@wiat:~$ sudo umount /mnt
hudahua@wiat:~/workspace/rootfs/busybox-1.31.0$ rm rootfs.ext4

制作一个ext4格式的磁盘空间
修改为500M

 hudahua@wiat:~/workspace/rootfs/busybox-1.31.0$ dd if=/dev/zero of=rootfs.ext4 bs=1M count=500

#格式化为ext4格式

 mkfs.ext4 rootfs.ext4

#挂载文件

sudo mount -t ext4 rootfs.ext4 /mnt/

#将rootfs的内容拷贝到rootfs中

 sudo cp _install/* /mnt/ -rf

卸载。

 sudo umount /mnt

4、测试运行程序

将rootfs.ext4 拷贝到运行目录,运行程序成功。

 hudahua@wiat:~/workspace/aarch64_rootfs$ ./qemu_ext4.sh
[root@myQEMU ]# mount -t nfs -o nolock 192.168.1.128:/home/hudahua/workspace /mnt
[root@myQEMU ]# cp /mnt/test/project/main .
[root@myQEMU ]# ./main
Hello World!
[root@myQEMU ]#

这篇关于在QEMU中测试执行程序相关错误问题处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690023

相关文章

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三