Windows / Linux 一件编译zlib库
一. 下载zlib库 : http://www.zlib.net
本文以 zlib-1.2.11.tar.xz 为例
二. 解压文件得到 zlib-1.2.11 文件夹,修改 zlib-1.2.11/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.11 相同目录下新建 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 568 -rwxr-xr-x. 1 root root 28848 Sep 30 03:09 example -rwxr-xr-x. 1 root root 28896 Sep 30 03:09 example64 w-r--r--. 1 root root 279722 Sep 30 03:09 libz.a ▽rwxrwxrwx. 1 root root 9 Sep 30 03:09 libz.so -> libz.so.1 lrwxrwxrwx. 1 root root 14 Sep 30 03:09 libz.so.1 -> libz.so.1.2.11 -rwxr-xr-x. 1 root root 191088 Sep 30 03:09 libz.so.1.2.11 -rwxr-xr-x. 1 root root 17712 Sep 30 03:09 minigzip -rwxr-xr-x. 1 root root 17728 Sep 30 03:09 minigzip64 [root@localhost zlib]# ll linux_bin_release/ total 332 -rwxr-xr-x. 1 root root 18792 Sep 30 03:09 example -rwxr-xr-x. 1 root root 18840 Sep 30 03:09 example64 -rw-r--r--. 1 root root 147314 Sep 30 03:09 libz.a lrwxrwxrwx. 1 root root 9 Sep 30 03:09 libz.so -> libz.so.1 lrwxrwxrwx. 1 root root 14 Sep 30 03:09 libz.so.1 -> libz.so.1.2.11 -rwxr-xr-x. 1 root root 117520 Sep 30 03:09 libz.so.1.2.11 -rwxr-xr-x. 1 root root 13872 Sep 30 03:09 minigzip -rwxr-xr-x. 1 root root 13888 Sep 30 03:09 minigzip64