win10 zlib编译

来源:互联网 发布:php导出excel表格 编辑:程序博客网 时间:2024/06/05 18:46

1 zlib基本信息

1.1 zlib官网

从http://www.zlib.net/下载http://zlib.net/zlib-1.2.8.tar.gz。
解压后得到源码。需要自己修改zconf.h.in文件为zconf.h。

1.2 github上zlib源码库

github下载源码,不需要对zconf.h.in改名。

github代码库网址:https://github.com/madler/zlib/

cd d:\gitgit clone https://github.com/madler/zlib.gitcd d:\git\zlibrem 切换出稳定版本代码git checkout v1.2.8 -b bv1.2.8

zlib代码提供了多种编译方式。建议使用CMake工具编译。

2 使用visual studio工程文件编译。

从http://zlib.net/zlib-1.2.8.tar.gz解压得到的,需要复制文件zconf.h.in为zconf.h。

2.1 建立vs2015工程

找到zlib-1.2.8\contrib\vstudio目录,复制一个vc11为vc14。使用vs2015打开vc14中的sln。并转化为vs2015的工程类型。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

2.2 选择debug 为win32编译。

这里写图片描述

这里写图片描述

出现如下错误信息:

错误 1 error LNK2026: 模块对于 SAFESEH
映像是不安全的。 D:\svn\CLib\zlib-1.2.8\contrib\vstudio\vc14\match686.obj testzlib
错误 6 error LNK1118:
“VERSION”语句中的语法错误 D:\svn\CLib\zlib-1.2.8\contrib\vstudio\vc14\zlibvc.def 4 1 zlibvc

解决方法:
找到zlibvc工程的zlibvc.def文件,在VERSION 1.2.8行前加入注释“; ”。

; VERSION      1.2.8

在zlibvc和 testzlib 工程上,右键属性菜单=>【连接器】 =>【命令行】 =>【其他选项】 的输入框内加入 /SAFESEH:NO。如果里面有内容,要在/前面加入空格。

这里写图片描述

修改后,debug版本可以编译通过。
Release版本做相同修改即可。
ReleaseWithoutAsm版本不需要修改SAFESEH。
编译后的内容在zlib-1.2.8\contrib\vstudio\vc14\x86目录下,如下:

MiniUnzipDebug
MiniUnzipRelease
MiniZipDebug
MiniZipRelease
TestZlibDebug
TestZlibDllDebug
TestZlibDllRelease
TestZlibRelease
TestZlibReleaseWithoutAsm
ZlibDllDebug
ZlibDllRelease
ZlibDllReleaseWithoutAsm
ZlibStatDebug
ZlibStatRelease
ZlibStatReleaseWithoutAsm

如果需要调试了解内容,可以添加工程,使用zlib-1.2.8\examples的文件调试了解使用方法。

我们在实际工程中,只需要使用zlib-1.2.8/zlib.h,zlib-1.2.8/zconf.h两个头文件,和刚才编译好的zlibwapi.lib(静态引入)或者zlibwapi.dll(动态引入)。
出于调试需要,可以把zlibwapi.pdb zlibwapi.map 等文件也引入,一般不需要。
习惯上,我们会把zlibwapi.dll编译成zlib.dll,把zlibwapi.lib编译成zlib.lib。

3 使用CMake编译zlib

zlib提供了CMake编译文件。我们可以使用CMake工具来编译。

3.1 安装CMake工具。

我安装了[cmake-3.4.0-win32-x86.exe]版本。(https://cmake.org/files/v3.4/cmake-3.4.0-win32-x86.exe)

3.2 配置CMake环境

3.2.1 配置CMake源码路径和编译目标路径。
这里写图片描述

3.2.2 点击 Configure 按钮,生成配置信息。
创建目标目录。
这里写图片描述

选择vs版本和编译类型后,点击 Finish 按钮。
Visual Studio 14 2015
Use default native compilers
这里写图片描述

默认exe文件输入目录和库文件输出目录都没指定

EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH

默认生成了install的各个目录
这里写图片描述

点击 Generate 按钮,生成工程文件
这里写图片描述

3.3 使用vs2015编译zlib工程。

3.3.1 用vs2015打开d:\git\zlib\build\x86\zlib.sln文件。
这里写图片描述

3.3.2 编译。编译成功。
这里写图片描述

3.3.3 把编译好的Release文件安装到系统。
切换到release版本,编译ALL_BUILD工程后,再单独编译INSTALL工程。把release版本安装到系统中。提示命令行执行错误 MSB3073这是因为默认向C:/Program Files (x86)目录拷贝文件,没有权限。

这里写图片描述

3.3.4 关闭vs2015,使用管理员权限启动vs2015,然后在编译INSTALL工程。安装成功。
这里写图片描述

3.4 把example工程设置为启动项,可以直接调试example工程。了解zlib使用。

这里写图片描述

4 使用命令行编译生成vs2015目标文件

4.1 需要自己修改zconf.h.in文件到zconf.h。

4.2 启动cmd窗口,在cmd窗口运行vs2015 x86环境。确保使用vs2015 x86编译器。

D:\git\zlib>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"

4.3 使用nmake命令和win32/Makefile.msc文件编译。

D:\git\zlib>nmake -f win32/Makefile.msc

这样生成的obj文件和目标文件(.dll,.lib,.exe)都在d:\git\zlib目录下,可以使用 nmake -f win32/Makefile.msc clean 命令清楚。参考zlib\win32\README-WIN32.txt说明文件。

0 0