Compression Unix可执行文件上的压缩算法?

Compression Unix可执行文件上的压缩算法?,compression,executable,Compression,Executable,当我在文本编辑器中打开一个unix可执行文件时,很明显编译器中的机器代码已经被压缩。如果我说错了什么,请纠正我,因为它是压缩的,编译器(我使用LLVM)使用的是什么压缩算法(zip、gzip等)?它是bzip2。它是在llvm ld v中实现的。1.4: 使用bzip2实现了字节码压缩。默认情况下,LLVM生成的所有字节码文件都将被压缩。可以使用可以生成字节码文件的工具的-disable Compression选项禁用压缩 当我在文本编辑器中弹出unix可执行文件时[…] 这取决于您对UNIX

当我在文本编辑器中打开一个unix可执行文件时,很明显编译器中的机器代码已经被压缩。如果我说错了什么,请纠正我,因为它是压缩的,编译器(我使用LLVM)使用的是什么压缩算法(zip、gzip等)?

它是
bzip2
。它是在llvm ld v中实现的。1.4:

使用bzip2实现了字节码压缩。默认情况下,LLVM生成的所有字节码文件都将被压缩。可以使用可以生成字节码文件的工具的-disable Compression选项禁用压缩

当我在文本编辑器中弹出unix可执行文件时[…]

这取决于您对UNIX的喜好,但现在UNIX可执行文件通常是未压缩的。当然,您可以手动压缩它们,但是如果不先解压缩它们,就无法链接或加载它们。在任何情况下,GCC和Clang都不会自动压缩它们的输出二进制文件


另外,我也不太清楚为什么你试图在文本编辑器中打开一个可执行文件——如果你想查看二进制文件,你应该寻找一个合适的二进制文件查看器,例如;如果您想在中看到更可读的代码版本,您应该使用。

谢谢,但是在LLVM生成的可执行文件末尾添加扩展名bzip2以获取机器代码。那么,我还需要做什么来获取机器代码呢?不要混淆字节码和二进制可执行文件。如果我没记错的话,字节码只是沿途生成的IR代码的紧凑表示,而不是最终的二进制。澄清一下,这不仅仅是因为它在你的文本编辑器中看起来像胡言乱语这一事实让你得出结论,它是压缩的,对吗?是什么让你认为它是压缩的?哈哈不,我已经多次看到zip archiver程序作为原始文本输出的内容。而且有一个清晰的方法来解释这些胡言乱语。这让我得出结论,它是压缩的。然后查找llvm是否进行压缩。