我有一个非常小的 C 程序可以反转文件。它在 Windows 上编译exe
为大小为 28,672 字节的文件。
- 减小文件大小的最佳方法是什么?
- 有没有什么工具可以告诉我什么占用的空间最多?(包括库)
- 对于这么简单的程序,这个大小正常吗?
- 我应该使用哪些编译器标志来减小文件大小(
/O1
并且/Os
似乎没有任何效果)?
顺便说一句 - 编译时gcc
我得到大约 50Kb 的文件,编译时cl
我得到 28Kb。
编辑:这是代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fi, *fo;
char *file1, file2[1024];
long i, length;
int ch;
file1 = argv[1];
file2[0] = 0;
strcat(file2, file1);
strcat(file2, ".out");
fo = fopen(file2,"wb");
if( fo == NULL )
{
perror(file2);
exit(EXIT_FAILURE);
}
fi = fopen(file1,"rb");
if( fi == NULL )
{
fclose(fo);
return 0;
}
fseek(fi, 0L, SEEK_END);
length = ftell(fi);
fseek(fi, 0L, SEEK_SET);
i = 0;
while( ( ch = fgetc(fi) ) != EOF ) {
fseek(fo, length - (++i), SEEK_SET);
fputc(ch,fo);
}
fclose(fi);
fclose(fo);
return 0;
}
更新:
- 编译
/MD
产生一个 16Kb 的文件。 - 用
tcc
(Tiny C Compiler) 编译产生一个 2Kb 的文件。 - 编译
gcc -s -O2
产生了一个 8Kb 的文件。