VC2005下编译zlib1.2.5
从zlib官方网站下载zlib的源代码zlib125.zip,只有VC6、VC9和VC10的工程,从VC6的工程转为VC8编译出现问题,如下:
1>Assembling...
1> Assembling: f:\work\study\zlib-1.2.5\contrib\masmx86\inffas32.asm
1>Assembling...
1> Assembling: f:\work\study\zlib-1.2.5\contrib\masmx86\gvmat32.asm
1>MASM : fatal error A1000: cannot open file : f:\work\study\zlib-1.2.5\contrib\masmx86\gvmat32.asm
1>Project : error PRJ0019: 工具从"Assembling..."
发现masmx86并没有gvmat32.asm,于是根据win32/Makefile.msc的说明,其中有4中编译方式,如下:
# Usage:
#
nmake -f win32/Makefile.msc
(standard build)
#
nmake -f win32/Makefile.msc LOC=-DFOO
(nonstandard build)
#
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \
#
OBJA="inffas32.obj match686.obj"
(use ASM code, x86)
#
nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF" \
#
OBJA="inffasx64.obj gvmat64.obj inffas8664.c"
(use ASM code, x64)
以第三种为例:
1、打开“Visual Studio 2005 命令提示”,为了使用VC2005的缺省系统配置参数;
2、切换目录到zlib-1.2.5\contrib\masmx86,并执行脚本bld_ml32.bat,此时会产生inffas32.obj和match686.obj,把这两个文件拷贝到源代码目录zlib-1.2.5下;
3、切换目录到zlib-1.2.5,执行:nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj"
经过以上三个步骤即可完成zlib1.2.5的编译。
如果使用第一种方式编译,需要修改win32/Makefile.msc,在OBJS中增加inffast.obj,否则会出现连接错误。