Windows / Linux 一件编译zlib库
2024-10-19 21:43:40
一. 下载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
最新文章
- 2016 Multi-University Training Contests
- Qt学习1
- system执行shell命令
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.1 Index用户列表]
- PHP前端$.ajax传递数据到后台
- 3篇OAuth的文章
- JavaBean-- 保存 范围
- ABP Zero源码
- Spring Hiernate整合
- Android shared_preference操作
- 如果固定电脑ip地址
- BZOJ 1257 - 余数之和 - [CQOI2007]
- [转载]URI、 URL 和 URN 的区别
- vb.net 與 SQLite連線
- .net运行时dll的查找路径顺序
- python基础之 序列 pickle&;json
- PostMessage实现多窗口之间的数据传递
- JS中一些常用的事件(笔记)
- sql server2008安装时提示重启计算机失败怎么办?
- windows环境安装tensorflow
热门文章
- tips 前端 各个设备的页面尺寸的media query 与页面高度的经验总结
- 洛谷T8115 毁灭
- webservice soapheader验证方法
- C#操作windows事件日志项
- C#设计模式学习笔记-单例模式(转)
- 基于最新友盟开发文档,集成友盟分享功能,赋demo
- POJ 3041.Asteroids-Hungary(匈牙利算法)
- 洛谷 P1064 金明的预算方案【DP/01背包-方案数】
- Lightoj 1348 Aladdin and the Return Journey (树链剖分)(线段树单点修改区间求和)
- mysql语法语句