使用gzip源代码的问题
过程如下
我把gzip1.2.4的main函数改成了gzip_main以后,make一下,不能通过,但是可以得到15个.o文件,然后我用
gcc -shared -Wl,-soname,libgzip.so.1 -o libgzip.so.1.0 *.o
ln -s libgzip.so.1.0 libgzip.so.1
ln -s libgzip.so.1 libgzip.so
可以得到一个动态库
然后我写了一个程序来使用他,程序如下
int create_temp(char *src, int slen)
{
FILE* fp=0;
int len =0;
fp = fopen( TF, "w+ ");
len=fwrite( src, 1, slen, fp);
if(!len)
{
close(fp);
return (int)-1;
}
close(fp);
return (int)1;
}#define DD "./gzip "
int main(int argc,char** argv)
{
FILE* fp=0;
char test_str[64*1024];
int fl=0;
int ac=3;
char *av[]={DD, "-N ", "tem "};
memset(test_str,0,64*1024);
fp = fopen( "ChangeLog ", "r ");
fseek(fp,0,SEEK_END);
fl=ftell(fp);
rewind(fp);
fl=fread(test_str, 1, fl, fp);
fclose(fp);
create_temp(test_str, fl);
gzip_main( ac, av);
}
这段代码的意思就是把得到的一段数据存到一个文件里,然后使用gzip的库来对他进行压缩,但是问题就这样出来了,gzip_main只能单独的去解压缩这个文件.create_temp(test_str, fl);gzip_main( ac, av);这样使用就会少2k的字节;如果文件事先存在,单独使用gzip_main( ac, av);又是正常的,实在不知道这个问题从哪里入手了,大家要帮帮我啊
最近要弄一个这样压缩程序,有好心人有这方面的经验吗,帮帮我吧,马上要交活了
[解决办法]
有个zlib库,开源的,应该比你这样用省事些