默认在windows 下编译的 Boost 没有 zlib 支持。
项目中用到了 boost iostreams 中的 zlib 过滤器,从 linux 移植到 windows 时遇到了项目编译时找不到 boost_zlib-vc100-mt-gd-1_55.lib 的问题。
原因是 windows 系统中默认没有 zlib 库,因此需要下载 zlib 的源码,并重新编译 boost 使其增加对 zlib 的支持。
以下命令完成了该任务。记录之以备忘。
.\b2 -j8 --with-iostreams -sZLIB_SOURCE="D:\C_LIBS\pack\zlib-1.2.8" -sZLIB_INCLUDE="D:\C_LIBS\pack\zlib-1.2.8" --build-type=complete address-model=64
其中, zlib-1.2.8 是从 zlib 官网下载的源码。
--with-iostreams 表示要编译 iostreams
address-mode=64 表示编译 x64 的库。
由于设定了 -sZLIB_SOURCE 和 ZLIB_INCLUDE 两个变量,编译 iostreams 时,会生成 boost_zlib_XXXX.lib 系列库。
只要在 boost 的根目录下运行,系统只会更新 iostreams 相关的库。