12

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

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

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

4

1 回答 1

17

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

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

于 2012-11-07T21:49:01.710 回答