【BUG】Linux目录下明明有可执行文件却提示找不到,“No such file or directory”,解决:为64位Ubuntu安装32位程序的运行架构

省流版

问题

Linux目录下明明有可执行文件却提示找不到,“No such file or directory”
在这里插入图片描述
我做了如下努力:

  1. ls显示;(能够成功显示)
  2. 修改文件名;(能够正常复制、修改、移动,并且被复制的仍然不能运行)
  3. 调整文件属性,弄成777
  4. cat显示文件。(能够成功显示)
  5. root执行文件;(找不到文件)
  6. 直接输入repeat;(显示无该命令)
  7. 切换到其他的目录下,再用相对路径执行repeat;(找不到文件)
  8. 绝对路径执行repeat;(找不到文件)
  9. exec执行:exec ./repeat;(找不到文件)
  10. 换个别的终端执行:/bin/sh ./repeat;(报错)
  11. 换了一个机子,能正常运行(说明并不是文件本身的问题)。

都是玄学办法,没有起到作用。

解决

检查文件的头部:readelf -h repeat
在这里插入图片描述

原来,这是32位的程序,在64位的Ubuntu中运行需要提前安装32位的库。

首先添加i32架构,然后更新镜像源,再安装就可以了,指令如下:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 -y
sudo apt install lib32z1 -y

然后就可以了!就可以运行了!!!

详细解释版

Linux环境下可执行文件无法运行:“No such file or directory”问题的排查与解决

一、问题描述

在Linux系统中,有时会遇到明明目录下存在可执行文件,但尝试执行时却提示“No such file or directory”的错误。本文将详细阐述如何排查和解决这一问题。

二、问题排查

当遇到上述问题时,我进行了以下排查步骤:

  1. 使用ls命令查看文件:确保文件确实存在于指定目录下,并且能够正常显示。

  2. 修改文件名:尝试修改文件名,并检查是否能够正常复制、修改、移动。然而,复制后的文件仍然无法运行。

  3. 调整文件属性:将文件属性设置为777,赋予所有用户读、写、执行权限。

  4. 使用cat命令查看文件内容:确保文件内容完整无误。

  5. 使用root用户执行文件:尝试以root用户身份执行文件,但仍然提示找不到文件。

  6. 直接输入文件名执行:直接输入文件名执行,显示无该命令。

  7. 切换目录执行:切换到其他目录,使用相对路径执行文件,仍然提示找不到文件。

  8. 使用绝对路径执行:使用文件的绝对路径执行,仍然提示找不到文件。

  9. 使用exec命令执行:尝试使用exec命令执行文件,结果仍然是无法找到文件。

  10. 换终端执行:换到其他终端执行文件,仍然报错。

  11. 换机器测试:将文件复制到另一台机器上测试,发现能够正常运行,说明问题并非出在文件本身。

三、问题解决

经过上述排查步骤,初步排除了文件损坏、权限不足、路径错误等原因。此时,我考虑到可能是文件架构与系统架构不匹配的问题。于是,我检查了文件的头部信息:

readelf -h repeat

通过检查发现,该文件是一个32位的程序,而我当前的系统是64位的Ubuntu。因此,在64位系统上运行32位程序需要安装相应的32位库。

解决步骤如下:

  1. 添加i386架构支持
sudo dpkg --add-architecture i386
  1. 更新软件包列表
sudo apt-get update
  1. 安装必要的32位库
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 -y
sudo apt install lib32z1 -y

安装完成后,再次尝试执行文件,问题得到解决,文件可以正常运行。

四、总结

在Linux系统中,当遇到可执行文件无法运行并提示“No such file or directory”的错误时,除了检查文件是否存在、权限是否正确、路径是否正确等常见问题外,还需要注意文件的架构是否与系统架构匹配。如果文件是32位的,而系统是64位的,则需要安装相应的32位库才能正常运行。

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/124946919。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shandianchengzi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值