zoukankan      html  css  js  c++  java
  • 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.0Common7ToolsVsDevCmd.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
  • 相关阅读:
    [模板]杜教筛
    [NOIP2014]解方程
    [NOIP2016] 组合数问题
    [HAOI2011] Problem b
    Rmq Problem mex
    [模板]Link-Cut-Tree
    [SDOI2013]森林
    单调队列优化多重背包
    [USACO17JAN]Promotion Counting
    [模板] 点分治
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/7647675.html
Copyright © 2011-2022 走看看