12

私は最近、実行ファイルの圧縮に関する研究を行っています。C言語ソースをコンパイルし、test.cWindowsではなくLinuxでUPXで圧縮する場合。Terminal: の一覧ですUPX: test.so NotCompressibleException。のソースコードtest.cは次のとおりです。

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

私が推測しているのは、実行可能ファイルが単純すぎて圧縮できないということですか? それとも私は何かを逃したのでしょうか?この問題について知っている人がいたら、理由を教えてください。問題を見つけるためにソースコードを読む必要があると誰も言わない場合。ああ!ソースコードを読む負担。

4

1 に答える 1

17

を出力する理由はいくつかありNotCompressibleExceptionますが、あなたの場合は単にバイナリのサイズが小さすぎるためです。UPX は 40Kb 未満のバイナリを処理できません。

この問題を回避する最善の方法は、バイナリを静的モードでコンパイルして、より大きな実行可能ファイルを取得することです。だから、試してみてください:gcc -static -o mytest mytest.cそしてupx -o mytest-upx mytest.

于 2012-11-07T21:49:01.710 に答える