shell 如何在Ubuntu上运行无扩展名(可能是ELF)文件?

hxzsmxv2  于 2022-12-13  发布在  Shell
关注(0)|答案(2)|浏览(230)

我在linux上得到了一个“二进制”文件,在windows上得到了一个单独的文件来完成一个特定的任务。这些程序在windows上是一个exe。linux版本的文件在linux上的功能和在windows上的一样。
但是,我无法执行它。我尝试(在终端上)仅通过文件名./[filename]执行它,甚至尝试了chmod +x [filename],然后尝试了第二种方式。
对于一切......我得到的结果:“未找到命令”。(顺便说一句,文件肯定在那里)。
我该怎么做?文件命令会产生:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e805f746e65c09cc8b0c037d8a8c27ee0a6a051c
yptwkmov

yptwkmov1#

我猜这是在64位系统上的32位编译。我使用gcc上的-m32选项将一个小的c文件交叉编译成二进制文件。这还需要一些额外的包。结果a.out看起来像这样。

% file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=be02470c8337b96e7deaaff323bc53865991c3ab, not stripped

将其与本机系统二进制文件进行比较

% file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped

运行a.out显示了这一点。

% ./a.out
zsh: no such file or directory: ./a.out

具体的“未找到命令”消息,我想,是bash打印。我自己使用zsh。
为了让这个工作,你可以安装multilib软件包。我没有把它缩小到确切的软件包,但是在Debian上安装gcc-multilib会带来你需要的一切。安装之后,我得到了以下结果。

% ./a.out
3.140523

(the程序应估计PI的值)。
注意:我实际上需要安装gcc-multilib来编译这个文件,然后我卸载了这些包来模拟一个没有所需的32位运行库的64位系统。

fzsnzjdm

fzsnzjdm2#

a.out是否具有可执行权限?
使用ls -la cmd进行检查,如果没有,则使用chmod a+x a.out and d添加权限,然后尝试执行

相关问题