如何在Ubuntu上运行无扩展(也许是ELF)文件?

时间:2016-11-07 05:14:25

标签: linux bash shell

我被给了一个"二进制" linux上的文件和特定任务的窗口的单独文件。这些程序是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

1 个答案:

答案 0 :(得分:7)

我的猜测是这是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

(该程序应该估计PI的值)。

注意:我实际上只需要安装gcc-multilib来编译文件。然后,我卸载了这些软件包,以模仿64位系统,该系统没有所需的32位运行时库。