一. 下载zlib库 : http://www.zlib.net

本文以  zlib-1.2..tar.xz  为例

二. 解压文件得到 zlib-1.2. 文件夹,修改 zlib-1.2./CMakeLists.txt 文件,在  set(VERSION "1.2.11") (大约6行)下面添加如下两句:

SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)

这两句的租用主要是指定可执行文件和库文件的输出目录,方便查看.

返回上一级,在 zlib-1.2. 相同目录下新建  build_vs_project.bat  脚本,输入如下内容

echo off
color 0A set CMAKE=cmake
set BUILD_DIR=vs_project cd zlib*
set ZLIB_PATH=%cd%
echo %ZLIB_PATH%
cd .. if not exist %BUILD_DIR% (
md %BUILD_DIR%
) cd %BUILD_DIR% %CMAKE% %ZLIB_PATH% pause

运行该脚本会产生一个 vs_project 文件夹,里面包含了一个vs解决方案,这个解决方案就是zlib的源码和一些测试用例,如下图(vs2015):

你可以通过这个解决方案查看zlib源码,也可以编译得到zlib库.但这样需要打开vs,并不方便.下面介绍一键编译的方法.

三.在 zlib-1.2.11 相同目录下新建 onekey_build_vs.bat 脚本,输入以下代码:

echo off
color 0A set CMAKE=cmake
set BUILD_DIR=vs_build cd zlib*
set ZLIB_PATH=%cd%
echo %ZLIB_PATH%
cd .. if not exist %BUILD_DIR% (
md %BUILD_DIR%
)
cd %BUILD_DIR% ::设置VS工具集,相当于指定VS版本,取决于VS的安装路径
set VS_DEV_CMD="D:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
call %VS_DEV_CMD% rem Debug版本
%CMAKE% %ZLIB_PATH% -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug
nmake /f Makefile
move ../bin ../vs_bin_debug rem Release版本
%CMAKE% %ZLIB_PATH% -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release
nmake /f Makefile
move ../bin ../vs_bin_release pause

运行此脚本,就可以一键生成debug和release两个版本的zlib库,不用打开vs,十分方便.产生的文件分别位于 vs_bin_debug 目录和 vs_bin_release 目录下.

文件如下:

四.有windows版本,当然也有linux版本.如下 onekey_build_linux.sh

#!/bin/bash

CMAKE='cmake'
BUILD_DIR='linux_build' cd zlib*
ZLIB_PATH=`pwd`
echo $ZLIB_PATH
cd .. if [ ! -d $BUILD_DIR ]; then
mkdir $BUILD_DIR
fi
cd $BUILD_DIR
# Debug 版本
$CMAKE $ZLIB_PATH -DCMAKE_BUILD_TYPE=Debug
make
mv ../bin ../linux_bin_debug # Release 版本
$CMAKE $ZLIB_PATH -DCMAKE_BUILD_TYPE=Release
make
mv ../bin ../linux_bin_release

生成的文件分别在: linux_bin_debug 和 linux_bin_release 目录下,如下:

[root@localhost zlib]# ll linux_bin_debug/
total
-rwxr-xr-x. root root Sep : example
-rwxr-xr-x. root root Sep : example64
w-r--r--. root root Sep : libz.a
▽rwxrwxrwx. root root Sep : libz.so -> libz.so.
lrwxrwxrwx. root root Sep : libz.so. -> libz.so.1.2.
-rwxr-xr-x. root root Sep : libz.so.1.2.
-rwxr-xr-x. root root Sep : minigzip
-rwxr-xr-x. root root Sep : minigzip64
[root@localhost zlib]# ll linux_bin_release/
total
-rwxr-xr-x. root root Sep : example
-rwxr-xr-x. root root Sep : example64
-rw-r--r--. root root Sep : libz.a
lrwxrwxrwx. root root Sep : libz.so -> libz.so.
lrwxrwxrwx. root root Sep : libz.so. -> libz.so.1.2.
-rwxr-xr-x. root root Sep : libz.so.1.2.
-rwxr-xr-x. root root Sep : minigzip
-rwxr-xr-x. root root Sep : minigzip64

Windows / Linux 一件编译zlib库的更多相关文章

  1. windows下使用cmake编译zlib与libpng libjpeg

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  2. 如何在 window7 环境编译 zlib 库?

    1.下载最新版本 zlib 库 `下载地址:http://www.zlib.net/ 2.打开vc14项目 解压下载的 zlib.zip 压缩包并打开zlib1211\zlib-1.2.11\cont ...

  3. [转]Windows下使用VS2015编译openssl库

    转自:http://blog.csdn.net/alger_magic/article/details/52584171 目标:编译vs环境下openssl库 工具: 1. 编译环境win10+vs2 ...

  4. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

  5. windows openssl-1.1.1 编译静态库和动态库

    一下为windows上安装过程 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/activeperl/ ...

  6. Windows/Linux javac/java编译运行引入所需的jar包

    > Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, java源文件放在D:/test/src目录下,名字为t2.java. 编译: javac  -cp  d: ...

  7. windows/Linux动态加载链接库问题

    windows: LoadLibraryA 指定的可执行模块映射到调用进程的地址空间并返回该 DLL 的句柄 HMODULE LoadLibraryA( LPCTSTR lpLibFileName// ...

  8. Windows下zlib库和libPng库的编译和使用

    关于zlib库和libpng是干嘛的,我就不说了,度娘和谷歌都能告诉你.这里主要记录下windows下如何利用vs2010编译和使用这两个库. 一.zlib库的编译 首先要下载这个库,这个谷歌和百度也 ...

  9. zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板

    前言   Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下.   版本编译引导 zlib在windows上的mingw32 ...

随机推荐

  1. h5页面添加背景音乐

    [需求]h5页面添加背景音乐,支持微信.QQ.各种APP. [实现思路]1.通过audio标签,设置自动播放,是一种方法,但是此方法只适合微信.QQ,并不兼容我司的APP,需要主动触发下播放事件. 2 ...

  2. cocos2d programming guide 翻译 引导页(完结)

    http://bbs.tairan.com/article-25-1.html  Cocos2d官方入门指导 原文地址:http://www.cocos2d-iphone.org/wiki/doku. ...

  3. git代码仓库迁移(从github到oschina)【转】

    转自:http://blog.csdn.net/a5244491/article/details/44807937 版权声明:本文为博主原创文章,未经博主允许不得转载. 因为一些特殊原因,需要将公司原 ...

  4. nginx+lua_module安装

    1.LuaJit安装 # cd /usr/local/src # git clone http://luajit.org/git/luajit-2.0.git # cd luajit-2.0 # ma ...

  5. 设置JPA的Query返回Map对象

    说明正常执行jpa查询的时候需要传一个对应实体进行映射返回的数据,这样有时候如果一个sql是复合sql关联很多表,就需要新建实体有点麻烦,通过下面方式就能将返回结果映射成map.这样就能随意获取返回结 ...

  6. 有关cookie的内容

    包括: Cookie概述(Cookie的存放,有效期和作用域) Cookie操作(保存Cookie,读取Cookie,Cookie的生命周期) Cookie工作原理(Cookie与会话跟踪,Cooki ...

  7. Python学习杂记_13_模块(一)_基础

    一.模块和模块调用 模块其实就是一个Python文件,模块的调用实际就是把这个Python文件从头到尾执行一遍. 如果是在相同路径下的调用: 1. 先导入整个模块,然后引用模块中的方法 import ...

  8. 转载——为Xamarin更好的开发而改写的库

    本人现今一直奋战在Xamarin.Android,可能有人会疑惑Xamarin本身就是跨平台的,为什么不能直接跨IOS和Android,这个当然是最后的目标,只是现今你连Android都不能拿出符合商 ...

  9. vue的路由设置小结

    vue的路由设置小结 // 异步路由的编写示例.其中针对component字段进行懒加载及分块处理,提升首屏加载速度的同时,也可以手动控制让某些页面合并到一个单独的js文件中,而不是每个页面都是一个j ...

  10. FZU-2219 StarCraft(贪心)

     Problem 2219 StarCraft Accept: 294    Submit: 860Time Limit: 1000 mSec    Memory Limit : 32768 KB   ...