我有以下问题:我有一个精灵文件,我想知道那个精灵文件是否可以作为一个独立的可执行文件运行。因此,对于共享库(例如,.so文件),我希望有False作为结果,对于准备运行的二进制文件,我希望True作为输出。我试图利用file来实现这一点,但显然所提供的信息是不够的。考虑一下
file /usr/bin/sudo /usr/bin/sudo: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3e4fbfd5a73126630bcc22d5dee68c32e2813566, stripped
实际上,我期望输出是ELF 64-bit LSB executable,就像gcc编译器一样:
file /usr/bin/gcc-5 /usr/bin/gcc-5: 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]=b3417f0bc306e9b0afe35e778b5e4702f2d22b26, stripped
我在这里错过了什么,还有其他的方法来实现我的目标吗?
发布于 2018-07-04 04:58:01
因此,我希望有False,对于准备运行的二进制文件,我想要True作为输出。
一般来说,您的目标是无法实现的:可以构建一个准备好运行的库(例如,Linux上的/lib64/libc.so.6 ),也可以构建一个可执行文件,即使报告了ELF 64-bit LSB executable,也会在启动时崩溃。
尝试运行任何二进制文件也是不明智的,除非您知道该二进制文件的来源以及它的预期执行结果。
我在这里错过了什么
正如this answer解释的那样,许多最近的Linux发行版默认构建饼式可执行文件。
还有其他方法来达到我的目标吗?
https://stackoverflow.com/questions/51164449
复制相似问题