我们可以为zlib编译两种版本,MINGW和VS。
zlib源码: http://www.zlib.net/
先安装MINGW编译器
http://www.mingw.org/
如果有装MINGW编译版的Qt开发环境的话可以直接使用附带的MING编译器,路经一般是:QTDIR/Tools/mingw482_32/bin
将这个路径加入PATH中,也可以在CMD中用如下命令临时加入到PATH中(自行改为MINGW的正确路径)
path=E:\Programming\Qt\Qt5.3.1.mingw\Tools\mingw482_32\bin
设置好路径后,切换到zlib源码目录下执行如下命令就可以完成编译:
mingw32-make -f win32/makefile.gcc
看到下面输出就大功告成了~
gcc -O3 -Wall -c -o adler32.o adler32.c gcc -O3 -Wall -c -o compress.o compress.c gcc -O3 -Wall -c -o crc32.o crc32.c gcc -O3 -Wall -c -o deflate.o deflate.c gcc -O3 -Wall -c -o gzclose.o gzclose.c gcc -O3 -Wall -c -o gzlib.o gzlib.c gcc -O3 -Wall -c -o gzread.o gzread.c gcc -O3 -Wall -c -o gzwrite.o gzwrite.c gcc -O3 -Wall -c -o infback.o infback.c gcc -O3 -Wall -c -o inffast.o inffast.c gcc -O3 -Wall -c -o inflate.o inflate.c gcc -O3 -Wall -c -o inftrees.o inftrees.c gcc -O3 -Wall -c -o trees.o trees.c gcc -O3 -Wall -c -o uncompr.o uncompr.c gcc -O3 -Wall -c -o zutil.o zutil.c ar rcs libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o windres --define GCC_WINDRES -o zlibrc.o win32/zlib1.rc gcc -shared -Wl,--out-implib,libz.dll.a \ -o zlib1.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclose.o gzl ib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr .o zutil.o zlibrc.o strip zlib1.dll gcc -O3 -Wall -I. -c -o example.o test/example.c gcc -o example.exe example.o libz.a strip example.exe gcc -O3 -Wall -I. -c -o minigzip.o test/minigzip.c gcc -o minigzip.exe minigzip.o libz.a strip minigzip.exe gcc -o example_d.exe example.o libz.dll.a strip example_d.exe gcc -o minigzip_d.exe minigzip.o libz.dll.a strip minigzip_d.exe
zlib.h zlib的头文件,包含了所有zlib函数的生明
- libz.a 用于静态链接的静态库
- zlib1.dll 动态链接的DLL
libz.dll.a 动态链接所需要的导入库
同时生成的还有几个可执行文件
minigzip.exe 静态编译的test/minigzip.c
minigzip_d.exe 动态编译的test/minigzip.c
用法:
* Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...]
* -c : write to standard output
* -d : decompress
* -f : compress with Z_FILTERED
* -h : compress with Z_HUFFMAN_ONLY
* -r : compress with Z_RLE
* -1 to -9 : compression level
example.exe 静态编译的test/example.c
example_d.exe 动态编译的test/example.c
用法:
* Usage: example [output.gz [input.gz]]
打开VS2013的 "VS2013 x86 本机工具命令提示", 在开始菜单->所有程序->Visual Studio 2013->Visual Studio Tools里可以找到
切换到zlib源码目录:
cd contrib\masmx86 bld_ml32.bat copy inffas32.obj ..\..\ copy match686.obj ..\..\ cd ..\..\ nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj"
没有问题的话就编译成功了。由于命名约定不一样,VS版和MINGW版生成的文件名有点不同。
zlib.lib 对应 libz.a
zdll.lib 对应 libz.dll.a