linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)

本文主要是介绍linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux下在转换system.img文件类型时,提示

首先进入到了可执行文件所在目录下,并将system.img也放在同一目录下:

查看文件信息,可以看到文件是存在的,并且是可以执行的。

于是执行如下命令:

执行后提示:bash: ./simg2img: No such file or directory

觉得很纳闷,不知道为什么明明在却提示没有这样的文件,

于是在网上各种查,因为我是在docker中运行的,所以最初一直以为跑在docker的容器中才会有这个问题,其实跟docker半毛钱关系都没有,是因为可执行文件是32位的,而容器是64位的ubuntu,系统位数与该可执行文件需要的lib库位数不匹配。,所以提示可执行文件不存在:

用uname命令打印系统信息,发现系统是64位系统

r# uname -a
Linux ecb7b6d39077 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

用file命令查看文件信息,发现是一个32位可执行文件。

file simg2img 
simg2img: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, BuildID[sha1]=d8a290a25c675ee17f378e4cdb1205790b78d63a, not stripped
dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped

要想在64位系统上与运行32位程序,则需要安装32位lib库。
对于Ubuntu用户可以使用下面的命令安装。

sudo apt-get install ia32-libsReading package lists... Done
Building dependency tree       
Reading state information... Done
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:lib32z1 lib32ncurses5 lib32bz2-1.0

过程中有可能找不到需要的库,但是会有几个替代包,选择安装其中一个。

sudo apt-get install lib32bz2-1.0lib32bz2-1.0

然后可以运行,不再提示No such file or directory,但是报错:

./simg2img system.img s.img
./simg2img: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

那就安装提示不存在的库:

sudo apt-get install lib32stdc++6

然后就可以正常运行之前的可执行文件了。

遇到这种问题先把所需要的32位lib库安装好,当然也可能是其他问题,如编码可是问题等。


也提醒我一定要准备个完整的docker镜像,安装一些常用的工具,如vim。32bit libs等



这篇关于linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用