linux下的可执行文件为何不能执行?

1.查看文件信息可以看到该文件存在并且可以执行。
-rwxr-xr-x1yuanyuan205812004年4月29日tshref

2。
原因是系统位数与可执行文件所需的lib位数不匹配。
使用uname命令打印系统信息,发现系统是64位系统。

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

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

5.在此过程中可能找不到所需的库,但会出现多个替代包,选择安装其中一个即可。

6.然后就可以正常运行之前的可执行文件了。
其实遇到此类问题可能还有其他原因,比如文本编码格式问题。

扩展信息:

主要特点

基本思想

Linux的基本思想包括两点:第一,一切都是一个文件。
其次,每个计划都有特定的目的。
首先是系统中的一切都汇总在一个文件中,包括命令、硬件、软件、操作系统、进程等等。
对于操作系统内核来说,它们都是具有自己的属性或类型的文件。

完全免费

Linux是一个免费的操作系统,用户可以通过互联网或其他渠道免费获得,并且可以随意修改其源代码。
这是其他操作系统无法做到的。
世界各地无数的程序员参与了Linux的修改和编写,程序员可以根据自己的兴趣和灵感进行修改,让Linux吸收了无数程序员的精华并不断成长。

完全兼容POSIX1.0标准

这使得流行的DOS和Windows程序可以通过相应的模拟器在Linux下运行。
这为用户从Windows切换到Linux奠定了基础。
很多用户在考虑使用Linux时,都会想到以前在Windows中流行的程序能否正常运行,这打消了他们的疑虑。

多用户、多任务

Linux支持多用户。
每个用户对自己的文件设备都有自己的权限,保证用户之间互不影响。
多任务处理是当今计算机最重要的功能之一,因为Linux操作系统可以同时独立地运行多个程序。

良好的界面

Linux有一个个人界面以及图形界面。
在字符界面中,用户可以通过键盘输入相应的指令来进行操作。
它还提供了类似于Windows图形界面的X-Window系统,用户可以使用鼠标进行操作。
X-Window环境与Windows类似,可以说是Windows的Linux版本。

支持多平台

Linux可以运行在多种硬件平台上,比如x86、680x0、SPARC、Alpha等处理器的平台。
另外,Linux还是一个嵌入式操作系统,可以运行在笔记本电脑、机顶盒或游戏机上

参考来源:百度百科-Linux

权限Linux下让文件具有可执行权限的方法linux设置文件可执行

Linux系统文件权限是文件的所有者、所属组和其他用户所拥有的权限,也就是说这三类人都可以以自己的权限对文件进行操作。
如果文件是可执行的,例如程序或脚本,则设置文件权限决定如何操作该文件(读取、写入或执行)。
Linux系统中获得文件可执行权限的方法有很多种,最常见的方法是通过将文件设置为可执行来修改文件权限,使文件可执行。
具体步骤如下:1.打开终端,输入chmod命令行。
可以使用以下代码:chmodu+xfile_name2代表用户,代表文件的所有者,+x代表将文件设置为可执行。
如果未指定文件所有者,则默认为当前登录用户。
3、还可以使用chmod命令修改文件权限,如果希望所有用户都对文件有适用的权限,可以使用以下代码:chmoda+xfile_name4文件权限可以是读、写、执行。
所有作者、群组和其他用户的权限。
最后,如果想检查文件权限,可以执行以下命令:ls-l5。
该命令的输出显示了文件权限、所有者、大小等信息,这些信息以二进制八进制形式表示文件权限。
以上是Linux下使文件具有可执行权限的方法,是Linux系统中文件权限的主要操作方法。
所以如果你在使用Linux系统时想让文件具有可执行权限,可以通过这些方法来设置文件权限,以获得更好的效果。

当我们在linux里面执行一个可执行文件报notfound的时候如何处理,背后的原理是什么?

在Linux中执行可执行文件时,如果遇到“notfound”错误,以blastp为例。
首先使用“file”命令查看文件属性,发现它是一个可移植文件,包含动态链接库依赖,运行在Linux-x86-64版本上。
然后通过“ldd”检查依赖的动态库,发现没有找到“libbz2.so.1”和“ld-linux-x86-64.so.2”。
当找不到“ld-linux-x86-64.so.2”时,可能表明操作系统底层存在依赖问题。
检查基础镜像操作系统,发现使用的是alpine,它对Linux基础库进行了中性化处理。
改用ubuntu镜像,对比发现ubuntu中包含alpine缺失的文件。
要理解这个问题,需要掌握Linux中静态链接库和动态链接库的原理。
静态链接库在编译时与程序链接在一起形成单个文件,而动态链接库在运行时动态加载。
不同镜像中库的差异会导致依赖问题。
选择合适的镜像环境可以解决执行问题。
总之,解决Linux执行文件时出现“notfound”错误的关键在于了解文件属性和依赖库的原理,选择合适的基础镜像环境。
掌握这些知识可以有效处理类似的问题。

linux内核源码:文件系统——可执行文件的加载和执行

本文深入探讨了Linux内核源代码的文件系统中可执行文件的加载和执行机制。
与Windows中的PE格式和exe文件不同,Linux使用ELF格式。
虽然两种操作系统都允许用户通过双击文件来运行程序,但Linux的实现和底层操作是不同的。
在Linux系统中,双击可执行文件可以启动程序,这涉及到一系列复杂的底层任务。
首先,我们简要了解一下进程之间如何访问数据。
当运行在用户模式时,ds和fs寄存器指向用户程序的数据段。
但是,当代码处于内核态时,ds指向内核数据段,而fs仍然指向用户态数据段。
为了保证各种状态下数据的正确访问,必须经常调整fs寄存器的值。
当用户输入参数时,该信息必须存储在进程的内存空间中。
Linux为此提供了128KB的32页内存空间,用于存储用户参数和环境变量。
通过一系列的复制操作,参数被安全地存储在进程的内存中。
虽然代码实现看起来很复杂,但核心功能与memcpy等传统复制函数类似。
为了了解参数和环境变量的处理,我们深入研究了如何通过各种fs值访问内存中的变量。
argv是指向参数的指针,argv*和argv**指向不同的地址,它们可以位于内核态或用户态。
访问这些变量时,必须经常更改fs值,以确保正确读取内存中的数据。
通过调用set_fs函数改变fs值并在读取后恢复,实现不同状态下的数据访问。
Linux在加载过程中,对参数和环境变量的处理涉及到特定的算法和逻辑,以保证程序的正确解析和执行。
例如,通过检查每个参数是否为空并区分参数来计算参数的数量。
同时,文件的头信息对于识别文件类型至关重要。
以前版本的Linux文件头信息非常简单,仅包含几个字段。
这些头信息为操作系统提供了识别文件类型的基础。
为了实现高效的文件执行,Linux使用了多种内存布局和管理技术。
当您运行文件时,操作系统负责将参数列表、环境变量、堆栈、数据段和代码段等组件放入进程的内存空间中。
这种布局可确保程序按预期运行。
最后,文章提到了一些先进的技术,例如线程、内存管理和文件系统操作,这些都是Linux内核源代码的关键部分。
虽然这些技术可能不会经常直接用于日常编程,但它们对于理解Linux的底层工作原理至关重要。
通过深入研究Linux内核的源代码,开发人员可以更好地理解操作系统的工作机制,从而在实际项目中提供更高效、更安全的解决方案。