无法在64位Ubuntu上运行32位动态可执行文件

克里斯·奥林

记录下来,我今天已经花了将近6个小时来进行这项工作。我已经用尽了Google和Stack Overflow / Superuser以及其他各种邮件列表上的其他类似问题。

我正在尝试运行以下应用程序:

# file ./ncsvc
./ncsvc: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped

# ls -la ncsvc
-rws--s--x 1 root root 1931688 Dec 19 20:41 ncsvc

我正在运行64位版本的Ubuntu:

# uname -m
x86_64

现在,有了过去,这里是此应用程序需要的库的一些详细信息:

# readelf -a ./ncsvc | grep interpreter
      [Requesting program interpreter: /lib/ld-linux.so.2]

# readelf -a ./ncsvc | grep NEEDED
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libz.so.1]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

这就是我被卡住的地方:

# ls -la /lib/ld-linux.so.2
lrwxrwxrwx 1 root root 32 Dec 19 23:31 /lib/ld-linux.so.2 -> /lib/x86_64-linux-gnu/ld-2.15.so

# locate libdl.so.2
/lib/i386-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libdl.so.2

# locate libz.so.1
/lib/i386-linux-gnu/libz.so.1
/lib/i386-linux-gnu/libz.so.1.2.3.4
/lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libz.so.1.2.3.4

# locate libpthread.so.0
/lib/i386-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0

# locate libm.so.6
/lib/i386-linux-gnu/libm.so.6
/lib/x86_64-linux-gnu/libm.so.6

# locate libc.so.6
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6

据我所知,我具有动态链接器及其需要运行的所有共享库(tl; dr:安装了ia32-libs IS)。除非我运行它,否则都会收到此错误。

# ./ncsvc
bash: ./ncsvc: cannot execute binary file

最后,我不确定这是否有帮助。

# ldd -v ./ncsvc
        not a dynamic executable
克里斯·奥林

内核未符合32位仿真支持。重新启动并选择符合要求的内核可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在64位Debian Jessie上运行32位可执行文件

无法以32位可执行文件(在64位操作系统上)以编程方式访问EFS文件

Ubuntu 12.02 32位打印机程序可执行文件无法在Ubuntu 14.04 64位中正常运行

为什么32位可执行文件不能在WoW64下运行?

在 X86-64 Ubuntu 20.04 上,为什么我的 32 位可执行文件不是?

为什么我的64位可执行文件比32位可执行文件大3倍?

如果可执行文件不存在,如何安装32位或64位可执行文件?

在Ubuntu 13.10中运行32位可执行文件

Docker容器无法运行使用wget复制的32位iperf可执行文件

C ++可执行文件无法在Windows 7中运行-64位不兼容

如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

如果我们可以在64位Windows上运行32位可执行文件,为什么不能将其转换?

如何安装build-essential:i386以在64位系统上编译32位可执行文件?

gfortran:在64位系统中编译32位可执行文件

在32位和64位计算机上的C / C ++可执行文件

在Ubuntu中哪里可以找到IntelliJ IDEA 64位可执行文件?

在Windows / Linux上使用python3脚本检查可执行文件是32位还是64位

如何在PowerShell中检查要安装的可执行文件是32位还是64位?

如何将64位和32位可执行文件绑定为一个?

在64位可执行文件中执行64位计算

在64位Linux中,是否可以在同一可执行文件中同时使用64位和32位指令?

没有设置可执行位时,如何从CD运行可执行文件?

Windows 说 64 位可执行文件是“不受支持的 16 位应用程序”

无法在挂载分区上运行可执行文件

无法在Linux上运行Pyinstaller可执行文件

即使objdump和readelf不同意,ldd也会为64位ELF返回“不是动态可执行文件”

如何使用mingw-w64编译和链接32位Windows可执行文件

无法在Ubuntu 12.04上运行二进制可执行文件

针对 32 位可执行文件的 Open Suse Leap 15.1 上的 iconv_open 支持