ARM上运行可执行程序出现No such file or directory的问题

本文介绍了在使用ARM交叉编译工具链时遇到的Nosuchfileordirectory错误的原因及解决方案。错误源于动态链接库不匹配,可通过静态链接或正确选择支持浮点运算的工具链解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

使用arm-none-linux-gnueabi-gcc –o hello hello.c编译完成,在ARM上运行出现报错:

-sh: ./hello: No such file or directory

原因:

因为我们的程序使用的是动态链接方式编译的,而ARM上的链接库文件路径不同,导致找不到文件,可以用gcc -static命令改用静态链接的方式编译:

arm-none-linux-gnueabi-gcc –o hello hello.c -static

 

编译器的架构有差 
这是发生在一次新的开发板的交叉编译中产生的,同样的程序用同样的工具链编译后,一个开发板正常,二另一个报No such file or directory,文件明明存在,这个问题在于arm-Linux-guneabi-和arm-linux-guneabihf-这两个链的差别在于hf二字,这个是浮点单元的支持与否,选择错误会导致上述错误发生。

用uname -a查看ARM的架构和Linux版本,举例:

root@imx6qsabresd:~# uname -a

Linux imx6qsabresd 3.14.28-1.0.0_ga+g91cf351 #14 SMP PREEMPT Tue Apr 25 16:25:22 CST 2017 armv7l GNU/Linux

查看执行程序的属性,举例:

zhao@zhao-VirtualBox:/home/nfs/file/ntp$ file ntpdate 

ntpdate: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped

以上的情况就无法执行,显示“No such file or directory”,然后通过更换GCC成功了。新版本:

gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz

### Ubuntu "No such file or directory" 错误解决方案 当在Ubuntu系统中尝试执行某个程序时如果遇到"No such file or directory"错误,可能的原因包括但不限于缺少可执行权限、文件类型与操作系统不兼容以及文件本身的损坏等问题[^4]。 对于缺乏可执行权限的情况,可以通过命令`chmod +x 文件名`来赋予该文件相应的执行权利。这允许用户运行此二进制文件作为应用程序的一部分操作流程。 针对文件格式同系统架构之间的差异所引发的问题——比如试图在一个64位版本的操作系统上启动专为32位设计的应用而未安装必要的库支持,则需确认目标平台特性是否满足需求。利用`file ./filename`可以获取有关特定文件类型的详情;与此同时借助`uname -a`能够了解主机当前使用的内核及其他重要参数信息。一旦确定两者之间存在冲突,应当考虑下载适配于现有环境的新副本或是通过额外配置使得旧版得以正常运作。 另外,在某些情况下,即使路径正确无误且具备适当属性,仍会遭遇此类异常现象。此时应排查是否存在依赖项缺失的情形。特别是涉及到跨平台开发工具链的时候,像ARM Linux GCC这类编译器若未能正确设置PATH变量指向其所在位置也会抛出相似的警告消息。因此建议核查相关软件包是否已妥善部署完毕,并确保shell初始化脚本里包含了正确的搜索路径定义[^2]。 最后一种可能性涉及到了底层存储介质层面的数据一致性问题。假如怀疑硬盘内部结构遭到破坏进而影响到关键组件加载过程的话,那么运用诸如fsck这样的磁盘检测实用程序来进行全面扫描不失为明智之举。具体做法是从单用户模式进入之后依次对各个分区实施强制性的健康状况评估工作,例如: ```bash sudo fsck -f /dev/sda1 sudo fsck -f /dev/sda6 sudo fsck -f /dev/sda7 ``` 上述措施有助于恢复潜在受损之处从而保障整个系统的稳定性和可靠性[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值