open-vmdk在linux编译时候 zlib.h的头文件问题 以及在windows使用zlib的资料查找记录
来源:互联网 发布:傲剑绿色版升级数据 编辑:程序博客网 时间:2024/05/29 04:10
http://www.zlib.net/
open-vmdk我看是一个linux的内容,里面使用到zlib.h
找到关于zlib.h的内容记录如下:
安装maq时出现以下问题:[root@localhost maq-0.7.1]# makemake all-ammake[1]: Entering directory `/data/safe/soft/maq-0.7.1'gcc -DHAVE_CONFIG_H -I. -Wall -m64 -D_FASTMAP -DMAQ_LONGREADS -g -O2 -c bfa.cbfa.c:1:18: 错误:zlib.h:没有那个文件或目录make[1]: *** [bfa.o] 错误 1make[1]: Leaving directory `/data/safe/soft/maq-0.7.1'make: *** [all] 错误 2解决方法:在网上查询了一下:主要问题是zlib-devel-1.1.4-8.i386.rpm没装,安装zlib-devel即可[root@localhost maq-0.7.1]# yum install zlib-develLoaded plugins: fastestmirror, prioritiesLoading mirror speeds from cached hostfile * addons: mirrors.163.com * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.comSetting up Install ProcessResolving Dependencies--> Running transaction check---> Package zlib-devel.i386 0:1.2.3-3 set to be updated---> Package zlib-devel.x86_64 0:1.2.3-3 set to be updated--> Finished Dependency ResolutionDependencies Resolved========================================================================================================================== Package Arch Version Repository Size==========================================================================================================================Installing: zlib-devel i386 1.2.3-3 base 101 k zlib-devel x86_64 1.2.3-3 base 102 kTransaction Summary==========================================================================================================================Install 2 Package(s)Upgrade 0 Package(s)Total download size: 202 kIs this ok [y/N]: yDownloading Packages:(1/2): zlib-devel-1.2.3-3.i386.rpm | 101 kB 00:00 (2/2): zlib-devel-1.2.3-3.x86_64.rpm | 102 kB 00:01 --------------------------------------------------------------------------------------------------------------------------Total 100 kB/s | 202 kB 00:02 Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing : zlib-devel 1/2 Installing : zlib-devel 2/2Installed: zlib-devel.i386 0:1.2.3-3 zlib-devel.x86_64 0:1.2.3-3 Complete!然后再重新编译安装
还存在问题如下:windows下如何用zlib.h如何解决。
Windows 7 64bit和Visual Studio 2010下安装及使用Zlib 1.2.5
本文主要介绍在Windows 7 64bit操作系统下,利用Visual Studio 2010,如何安装,生成,并使用zlib 1.2.5。
(1). 首先,使用Visual Studio 2010编译生成zlib 1.2.5版本的静态和动态链接库。
(2). 然后,通过加载静态链接库zlibstat.lib,实现对简单txt文档的压缩与解压缩。
(3). 最后,通过调用动态链接库zlibwapi.lib,实现对简单txt文档的压缩与解压缩。
1. 使用Visual Studio 2010编译生成zlib 1.2.5版本
2. 通过加载静态链接库zlibstat.lib使用zlib
3. 通过加载动态链接库zlibwapi.lib使用zlib
4. 测试
参考文献
http://www.helyar.net/2010/compiling-zlib-lib-on-windows/
http://forum.filezilla-project.org/viewtopic.php?f=3&t=7493
http://topic.csdn.net/u/20100711/19/4a3f45e9-b743-48d1-abac-f8e6d493f330.html
http://blog.sina.com.cn/s/blog_5325b5f90100rvbl.html
test.cpp代码如下
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "zlib.h"
void MyDoMinus64(LARGE_INTEGER *R,LARGE_INTEGER A,LARGE_INTEGER B)
{
R->HighPart = A.HighPart - B.HighPart;
if (A.LowPart >= B.LowPart)
R->LowPart = A.LowPart - B.LowPart;
else
{
R->LowPart = A.LowPart - B.LowPart;
R->HighPart --;
}
}
#ifdef _M_X64
// see http://msdn2.microsoft.com/library/twchhe95(en-us,vs.80).aspx for __rdtsc
unsigned __int64 __rdtsc(void);
void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
{
// printf("rdtsc = %I64x\n",__rdtsc());
pbeginTime64->QuadPart=__rdtsc();
}
LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
{
LARGE_INTEGER LIres;
unsigned _int64 res=__rdtsc()-((unsigned _int64)(beginTime64.QuadPart));
LIres.QuadPart=res;
// printf("rdtsc = %I64x\n",__rdtsc());
return LIres;
}
#else
#ifdef _M_IX86
void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
{
DWORD dwEdx,dwEax;
_asm
{
rdtsc
mov dwEax,eax
mov dwEdx,edx
}
pbeginTime64->LowPart=dwEax;
pbeginTime64->HighPart=dwEdx;
}
void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
{
myGetRDTSC32(pbeginTime64);
}
LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
{
LARGE_INTEGER LIres,endTime64;
myGetRDTSC32(&endTime64);
LIres.LowPart=LIres.HighPart=0;
MyDoMinus64(&LIres,endTime64,beginTime64);
return LIres;
}
#else
void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
{
}
void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
{
}
LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
{
LARGE_INTEGER lr;
lr.QuadPart=0;
return lr;
}
#endif
#endif
void BeginCountPerfCounter(LARGE_INTEGER * pbeginTime64,BOOL fComputeTimeQueryPerf)
{
if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64)))
{
pbeginTime64->LowPart = GetTickCount();
pbeginTime64->HighPart = 0;
}
}
DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
{
LARGE_INTEGER endTime64,ticksPerSecond,ticks;
DWORDLONG ticksShifted,tickSecShifted;
DWORD dwLog=16+0;
DWORD dwRet;
if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(&endTime64)))
dwRet = (GetTickCount() - beginTime64.LowPart)*1;
else
{
MyDoMinus64(&ticks,endTime64,beginTime64);
QueryPerformanceFrequenc
{
ticksShifted = Int64ShrlMod32(*(DWORDLONG*)&ticks,dwLog);
tickSecShifted = Int64ShrlMod32(*(DWORDLONG*)&ticksPerSecond,dwLog);
}
dwRet = (DWORD)((((DWORD)ticksShifted)*1000)/(DWORD)(tickSecShifted));
dwRet *=1;
}
return dwRet;
}
int ReadFileMemory(const char* filename,long* plFileSize,void** pFilePtr)
{
FILE* stream;
void* ptr;
int retVal=1;
stream=fopen(filename, "rb");
if (stream==NULL)
return 0;
fseek(stream,0,SEEK_END);
*plFileSize=ftell(stream);
fseek(stream,0,SEEK_SET);
ptr=malloc((*plFileSize)+1);
if (ptr==NULL)
retVal=0;
else
{
if (fread(ptr, 1, *plFileSize,stream) != (*plFileSize))
retVal=0;
}
fclose(stream);
*pFilePtr=ptr;
return retVal;
}
int main(int argc, char *argv[])
{
int BlockSizeCompress=0x8000;
int BlockSizeUncompress=0x8000;
int cprLevel=Z_DEFAULT_COMPRESSION ;
long lFileSize;
unsigned char* FilePtr;
long lBufferSizeCpr;
long lBufferSizeUncpr;
long lCompressedSize=0;
unsigned char* CprPtr;
unsigned char* UncprPtr;
long lSizeCpr,lSizeUncpr;
DWORD dwGetTick,dwMsecQP;
LARGE_INTEGER li_qp,li_rdtsc,dwResRdtsc;
printf("test zlib 1.2.5 using dynamic library.\n");
printf("Zhao Wang, June 1st, 2011.\n");
printf("press any key to start.");;
getchar();
if (argc<=1)
{
printf("run TestZlib <File> [BlockSizeCompress] [BlockSizeUncompress] [compres. level]\n");
return 0;
}
if (ReadFileMemory(argv[1],&lFileSize,(void**)&FilePtr)==0)
{
printf("error reading %s\n",argv[1]);
return 1;
}
else printf("file %s read, %u bytes\n",argv[1],lFileSize);
if (argc>=3)
BlockSizeCompress=atol(argv[2]);
if (argc>=4)
BlockSizeUncompress=atol(argv[3]);
if (argc>=5)
cprLevel=(int)atol(argv[4]);
lBufferSizeCpr = lFileSize + (lFileSize/0x10) + 0x200;
lBufferSizeUncpr = lBufferSizeCpr;
CprPtr=(unsigned char*)malloc(lBufferSizeCpr + BlockSizeCompress);
BeginCountPerfCounter(&li_qp,TRUE);
dwGetTick=GetTickCount();
BeginCountRdtsc(&li_rdtsc);
{
z_stream zcpr;
int ret=Z_OK;
long lOrigToDo = lFileSize;
long lOrigDone = 0;
int step=0;
memset(&zcpr,0,sizeof(z_stream));
deflateInit(&zcpr,cprLevel);
zcpr.next_in = FilePtr;
zcpr.next_out = CprPtr;
do
{
long all_read_before = zcpr.total_in;
zcpr.avail_in = min(lOrigToDo,BlockSizeCompress);
zcpr.avail_out = BlockSizeCompress;
ret=deflate(&zcpr,(zcpr.avail_in==lOrigToDo) ? Z_FINISH : Z_SYNC_FLUSH);
lOrigDone += (zcpr.total_in-all_read_before);
lOrigToDo -= (zcpr.total_in-all_read_before);
step++;
} while (ret==Z_OK);
lSizeCpr=zcpr.total_out;
deflateEnd(&zcpr);
dwGetTick=GetTickCount()-dwGetTick;
dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
printf("total compress size = %u, in %u step\n",lSizeCpr,step);
printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
printf("defcpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
printf("defcpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
}
CprPtr=(unsigned char*)realloc(CprPtr,lSizeCpr);
UncprPtr=(unsigned char*)malloc(lBufferSizeUncpr + BlockSizeUncompress);
BeginCountPerfCounter(&li_qp,TRUE);
dwGetTick=GetTickCount();
BeginCountRdtsc(&li_rdtsc);
{
z_stream zcpr;
int ret=Z_OK;
long lOrigToDo = lSizeCpr;
long lOrigDone = 0;
int step=0;
memset(&zcpr,0,sizeof(z_stream));
inflateInit(&zcpr);
zcpr.next_in = CprPtr;
zcpr.next_out = UncprPtr;
do
{
long all_read_before = zcpr.total_in;
zcpr.avail_in = min(lOrigToDo,BlockSizeUncompress);
zcpr.avail_out = BlockSizeUncompress;
ret=inflate(&zcpr,Z_SYNC_FLUSH);
lOrigDone += (zcpr.total_in-all_read_before);
lOrigToDo -= (zcpr.total_in-all_read_before);
step++;
} while (ret==Z_OK);
lSizeUncpr=zcpr.total_out;
inflateEnd(&zcpr);
dwGetTick=GetTickCount()-dwGetTick;
dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
printf("total uncompress size = %u, in %u step\n",lSizeUncpr,step);
printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
printf("uncpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
printf("uncpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
}
if (lSizeUncpr==lFileSize)
{
if (memcmp(FilePtr,UncprPtr,lFileSize)==0)
printf("compare ok\n");
}
printf("press any key to exit the program.");
getchar();
return 0;
}
Windows下两种使用zlib库的方法
在vc6下,需要把zlib.h、zconf.h和从zlib工程中生成的zlib.lib文件放到你的代码目录下,并且设置项目属性:project->settings->link->category选择input,在library modules中的最后面输入一个空格和zlib.lib,在lgnore libraries输入MSVCRT(否则这个默认库和zlib库会有冲突),然后project-> settings-> c/c++->Category中选择Code generation,在Use run-time Library中选择Debug Multithreaded DLL
如果library modules中输入zlib.lib了,那么在代码中添加
#include "zlib.h"即可,否则还要加入下面这句
#pragma comment( lib, "zlib.lib")
二 使用动态库
同样,把zlib.h、zconf.h和从zlib工程中生成的zlib1.lib和zlib1.dll复制到自己的源程序文件夹中,代码中添加
#include "zlib.h"
#pragma comment( lib, "zlib1.lib")
- open-vmdk在linux编译时候 zlib.h的头文件问题 以及在windows使用zlib的资料查找记录
- 记录zlib在windows上编译使用调研的资料和过程
- zlib在windows上的编译
- zlib库 在windows下的编译与使用
- zlib库 在windows下的编译与使用
- 在使用zlib时遇到的问题
- 在Windows上编译最新的CURL,含有zlib,openssl
- 在PC环境下用VS2005编译供Windows使用的libpng和zlib库
- zlib linux 编译安装以及windows下使用zlib库开发
- 在编译 squashfs4.2时候fatal error: zlib.h & lzma.h : No such file or directory
- zlib编译,windows/Linux
- Linux下zlib的编译
- zlib库在windows系统中的编译
- zlib的编译和使用
- 编译C++的时候系统提示【 “#include “iostream.h”: 在查找预编译头使用时跳过 】
- zlib.h not found的编译问题解决
- zlib.h的安装
- 编译qte-4.6.3交叉编译库的时候提示确实zlib.h的解决办法
- HTML的常用标签
- 安装node.js
- 一些实用的免费接口
- 用递归的思想求斐波那契数
- 西南科技大学OJ题 数字转换成字符0613
- open-vmdk在linux编译时候 zlib.h的头文件问题 以及在windows使用zlib的资料查找记录
- IDEA 调试Web请求(Tomcat为例)
- 实验3:Android组件通信
- 面试实战酷跑demo
- java多线程相关问题(待解决)
- 分享一个Java生成二维码工具类
- java正则表达式中Group的理解
- BZOJ1003(ZJOI2006)[物流运输]--最短路+DP
- Spark2.2任务提交运行机制及源码解析