2012-09-23 259 views
4

我最近做了一些关于可执行压缩的研究。编译test.c C语言源并在Linux中使用UPX而不是Windows进行压缩。它在终端列表中:UPX: test.so NotCompressibleException。的test.c的源代码是:UPX NotCompressibleException

int main(){ 
    int i = 0; 
    printf("HelloWorld\n"); 
    return 0; 
} 

什么我猜是可执行文件过于简单压缩?或者 可能是我错过了什么?如果有人知道这个问题,请告诉我 原因。如果没有人告诉我,我必须阅读源代码来找出问题。啊!阅读源代码的负担。

回答

6

有几个原因输出NotCompressibleException,但在你的情况下,这只是因为你的二进制文件的大小太小。 UPX无法处理40Kb以下的二进制文件。

解决此问题的最佳方法是以静态模式编译您的二进制文件,以获得更大的可执行文件。因此,请尝试:gcc -static -o mytest mytest.c然后upx -o mytest-upx mytest

相关问题