基于 Linux (Ubuntu 11.10)
在我的计算机崩溃之前,我的计算机上有一个二进制文件:./program
这是在没有来源的情况下给我的。这个文件执行得很好。当我的硬盘出现故障时,我开始全新安装并尝试在同一台计算机上运行此二进制文件。现在失败了:
bash: ./program: cannot execute binary file
正在运行ldd
文件上提供了更多信息:
/usr/bin/ldd: line 161: /lib64/ld-linux-x86-64.so.2: cannot execute binary file
not a dynamic executable
我有第二台运行二进制文件的计算机和 ldd
给出输出:
./program:
linux-vdso.so.1 => (0x00007fffdad5e000)
libz.so.1 => /lib64/libz.so.1 (0x00000039a1400000)
libstdc++.so.6 => /usr/local/gcc/gcc-4.5.1/lib64/libstdc++.so.6 (0x00007fce82c7a000)
libm.so.6 => /lib64/libm.so.6 (0x00007fce829f6000)
libgcc_s.so.1 => /usr/local/gcc/gcc-4.5.1/lib64/libgcc_s.so.1 (0x00007fce827e1000)
libc.so.6 => /lib64/libc.so.6 (0x00007fce82452000)
/lib64/ld-linux-x86-64.so.2 (0x00007fce82f7f000)
有没有办法让我知道需要什么,以便我可以让我的程序再次运行?我知道崩溃之前安装的任何内容都是通过 apt-get
完成的所以我认为它不需要存储库中没有的任何独特内容。
本地化问题?
我承认这个特定问题可能对我来说很特殊 - 但这个问题仍然具有一般意义。仅给定一个二进制文件,如何确定它需要运行哪些库?
最佳答案
在 ldd 工作的计算机上以程序作为参数运行 file
。它会告诉您二进制文件是针对 32 位还是 64 位构建的。您可能必须先安装 32 位兼容性库才能运行,在 debian/ubuntu 上这称为 ia32-libs
。
关于linux - 该二进制文件需要哪些库才能运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467952/