2010年9月21日

[筆記]Boost Lib Build with zlib for iostream

最近剛好要用到 zlib 解壓縮
恰巧看到 Boost.Iostreams 裡面剛好有 zlib 相關的包裝, 就稍微試用了一下...

沒想到居然給我出現
fatal error LNK1104: cannot open file 'libboost_zlib-vc80-mt-sgd-1_43.lib'
這個錯誤訊息

跑到 boost 的 stage 下找,果然 bjam 沒有幫我建置出 zlib 相關的東西
這到底是怎麼回事呢?



去網路上逛了一圈,拜了好幾回 google 大神,總算找到了解決辦法:

1. 先到網路上 下載 zlib-1.2.3 版本的 source (註一)
並且解開到指定目錄, 在此假設為 "d:\lib\zlib-1.2.3\"

2. 打開命令提示字元(cmd.exe),並且將目錄切換到之前 bjam 所在位置
(詳情可參考我上一篇 建置 boost 步驟)

3. 執行以下命令 :
bjam --build-dir="d:\lib\boost_build" --toolset=msvc-8.0
-sNO_ZLIB=0 -sZLIB_SOURCE="d:\lib\zlib-1.2.3" --with-iostreams
--build-type=complete stage

其中 -sNO_ZLIB=0 表示要使用 zlib
而 -sZLIB_SOURCE="d:\lib\zlib-1.2.3" 則是指定 zlib 的來源目錄

之後就可以在 stage 中找到 libboost_zlib_xxxxxx.lib 等相關的檔案了

以上

===

註一 : boost 1.43.0 版本不支援 zlib 1.2.5 , 因為有缺少檔案 ...

2 則留言:

yaoyansi 提到...

zlib和boost不兼容的问题参见这里http://tlzprgmr.wordpress.com/2010/03/17/building-boost-1-42-with-zlib-1-2-4-support/

yaoyansi 提到...

谢谢你的方法,
我在这里引用了你的文章http://www.cnblogs.com/yaoyansi/articles/1864702.html