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说明文件。
- win10 zlib编译
- win10下Visual Studio 2015,C++ x64编译zlib
- zlib编译
- 编译zlib
- 编译zlib
- zlib编译
- zlib交叉编译过程
- zlib 交叉编译方法
- 编译 zlib 问题
- 编译 zlib 问题
- 编译boost zlib
- vc9编译zlib
- 1、交叉编译zlib
- 编译Zlib注意
- zlib编译,windows/Linux
- mingw编译zlib
- zlib window上编译
- Android 编译 zlib
- 【NOIP2017提高组模拟12.10】幻魔皇
- 字符串分段(串)
- Mysql主从配置,实现读写分离
- 上传本地项目到git
- 获取命令行参数的各种变化
- win10 zlib编译
- 证明支配集问题是NP完全问题
- [51nod 1531]树上的博弈
- java 代理
- 形状属性
- 一个对象的内存图及运行流程和3个对象的内存图的运行流程
- Git实现从本地添加项目到远程仓库
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(三)NOIP2002-NOIP2003
- 【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇