Blog categories

Comments

[Boost] Boost 와 Zlib 사용하기

[Boost] Boost 와 Zlib 사용하기

Boost Library

Boost 라이브러리는 다음 페이지에서 받을 수 있다.
23년 03월 기준 1.81.0이 최신 버전이다.

받은 파일의 압축을 해제하고, bootstrap.bat 파일을 실행한다.

Image module

b2.exe와 bjam.exe 파일이 생성된다.

생성된 b2.exe 파일을 이용해 boost library를  build 할 수 있다.

관련해 자세한 사항들은 아래 링크를 참조할 수 있다.

Image module

추가로 b2.exe 응용의 기본적인 사용 방법은 b2.exe –help를 통해서도 확인할 수 있다.

Zlib

zlib는 다음 페이지에서 받을 수 있다.
23년 03월 기준 1.2.13이 최신 버전이다.

Build Boost Library

b2.exe 응용의 빌드 옵션은 사용 환경과 방법에 따라 다양하다.

여기서는 MSVC 143 환경에서 debug 및 release 모드 모두 빌드하였다. 본 라이브러리를 사용하는 프로젝트 환경에 따라 link 방식과 address-model을 설정한다.

Link 방식 default 값은 shared 이며, static 으로 지정하려 하는 경우 아래와 같이 link=static으로 명시한다.

b2.exe -j4 -a --toolset=msvc-14.3 variant=debug,release link=static threading=multi address-model=64 -sZLIB_SOURCE=C:\Lib\zlib-1.2.13 -sZLIB_INCLUDE=C:\Lib\zlib-1.2.13
Image module

별다른 경로 옵션 없이 빌드하는 경우 library 파일들은 boost폴더 밑에 stage/lib 폴더에 생성된다.

Boost library에서 iostreams의 zlib 를 사용할 경우 zlib 관련 파일이 필요하다.
Boost Library를 그냥 compile 할 경우,

libboost_zlib-vc000-mt-gd-000.lib 파일을 찾을 수 없음

과 같은 link error가 발생한다.

 


 

Compile Boost library with zlib

이제 boost 컴파일 시 zlib를 연결해주면 되는데 아래와 같은 옵션을 추가해주면 된다.
zlib 버전에 맞도록 1.2.xx 부분을 교체하고, source파일이 존재하는 경로와 include 파일 경로를 잡아주면 된다.

-sZLIB_SOURCE=C:\Lib\zlib-1.2.xx -sZLIB_INCLUDE=C:\Lib\zlib-1.2.xx

예를 들어, 다른 파일은 필요 없이 iostreams 파일에 대해서 zlib와 함께 다시 컴파일 할 경우 아래와 같이 컴파일 할 수 있다.

–with-<library> 옵션을 사용하는 경우 해당 라이브러리만 빌드가 수행된다.

b2.exe -j4 -a --toolset=msvc-14.x variant=debug,release link=static threading=multi address-model=64 --with-iostreams -sZLIB_SOURCE=C:\Lib\zlib-1.2.xx -sZLIB_INCLUDE=C:\Lib\zlib-1.2.xx

컴파일이 완료되면 버전에 따라,

  • libboost_iostreams-vc143-mt-gd-x64-1_81.lib
  • libboost_iostreams-vc143-mt-gd-x64-1_81.lib
  • libboost_zlib-vc143-mt-gd-x64-1_81.lib
  • libboost_zlib-vc143-mt-x64-1_81.lib

와 같은 파일이 생성된다.

boost 컴파일이 제대로 되는 경우에도 zlib 컴파일은 제대로 실행되지 않는 경우도 있다.

Windows 10 환경이라면  Windows 10 SDK를 설치한다.

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

div#stuning-header .dfd-stuning-header-bg-container {background-color: #3f3f3f;background-size: cover;background-position: top center;background-attachment: initial;background-repeat: no-repeat;}#stuning-header div.page-title-inner {min-height: 350px;}