我在linux上获得了一个“二进制”文件,而在一个特定的任务中,我获得了一个单独的文件。 该程序是一个exe的窗口。 在Linux上,该文件的linux版本和windows一样具有相同的function。
但是,我无法执行此操作。 我尝试了(在terminal上)通过文件名,. ./[filename]
chmod +x [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
我的猜测是,这是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
来编译这个文件。 然后我卸载了软件包,模仿一个没有32位运行时库的64位系统。