Ubuntu 20.04에서 직접 Boost 라이브러리 설치하기

· by 박승재

Boost Downloads로 가서 라이브러리를 다운로드합니다.

$ wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.gz

wget을 이용하면 리눅스에서 파일을 다운로드 할 수 있습니다.

$ tar -xvf boost_1_74_0.tar.gz
$ cd boost_1_74_0

다운로드한 파일의 압축을 풀고 폴더로 이동합니다.

  • x : 묶음을 해제
  • v : 압축 해제 과정을 화면에 표시
  • f : 파일 이름을 지정

참고: 리눅스 tar.gz 압축 및 해제

$ ./bootstrap.sh
Building Boost.Build engine with toolset gcc... tools/build/src/engine/b2
Unicode/ICU support for Boost.Regex?... not found.
Backing up existing Boost.Build configuration in project-config.jam.1
Generating Boost.Build configuration in project-config.jam for gcc...

Bootstrapping is done. To build, run:

    ./b2

To generate header files, run:

    ./b2 headers

To adjust configuration, edit 'project-config.jam'.
Further information:

   - Command line help:
     ./b2 --help

   - Getting started guide:
     http://www.boost.org/more/getting_started/unix-variants.html

   - Boost.Build documentation:
     http://www.boost.org/build/

Boost.Python을 같이 설치하려면 --with-python 옵션을 전달해야 합니다:

$ ./bootstrap.sh --with-python=python3

fatal error: pyconfig.h: No such file or directory 오류는 파이선 헤더를 설치하면 해결됩니다.

$ sudo apt install python3-dev

빌드를 위한 설정 파일을 만들어주는 과정입니다.

$ sudo ./b2 install
Performing configuration checks

    - default address-model    : 64-bit
    - default architecture     : x86
    - C++11 mutex              : yes
    - lockfree boost::atomic_flag : yes
    - has stat::st_mtim        : yes
    - has stat::st_mtimensec   : no
    - has stat::st_mtimespec   : no
    - Boost.Config Feature Check: cxx11_auto_declarations : yes
    - Boost.Config Feature Check: cxx11_constexpr : yes
    - Boost.Config Feature Check: cxx11_defaulted_functions : yes
    - Boost.Config Feature Check: cxx11_final : yes
    - Boost.Config Feature Check: cxx11_hdr_mutex : yes
    - Boost.Config Feature Check: cxx11_hdr_tuple : yes
    - Boost.Config Feature Check: cxx11_lambdas : yes
    - Boost.Config Feature Check: cxx11_noexcept : yes
    - Boost.Config Feature Check: cxx11_nullptr : yes
    - Boost.Config Feature Check: cxx11_rvalue_references : yes
    - Boost.Config Feature Check: cxx11_template_aliases : yes
    - Boost.Config Feature Check: cxx11_thread_local : yes
    - Boost.Config Feature Check: cxx11_variadic_templates : yes
    - has_icu builds           : no
...
common.copy /usr/local/lib/cmake/boost_date_time-1.74.0/boost_date_time-config.cmake
common.copy /usr/local/include/boost/compatibility/cpp_c_headers/cctype
common.copy /usr/local/include/boost/compatibility/cpp_c_headers/cassert
common.copy /usr/local/lib/cmake/boost_coroutine-1.74.0/libboost_coroutine-variant-shared.cmake
common.copy /usr/local/lib/cmake/boost_thread-1.74.0/boost_thread-config.cmake
common.copy /usr/local/lib/cmake/boost_date_time-1.74.0/boost_date_time-config-version.cmake
common.copy /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant-shared.cmake
common.copy /usr/local/lib/libboost_exception.a
ln-UNIX /usr/local/lib/libboost_date_time.so
common.copy /usr/local/lib/cmake/boost_exception-1.74.0/boost_exception-config.cmake
common.copy /usr/local/lib/cmake/boost_exception-1.74.0/boost_exception-config-version.cmake
...updated 15823 targets...

라이브러리를 실질적으로 설치하는 과정입니다. /usr/local/lib에 Boost를 설치할 때는 sudo로 실행해야 파일이 정상적으로 생성됩니다.

참고: Boost Getting Started on Unix Variants

find_package(Boost 1.69 REQUIRED COMPONENTS regex)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})

CMake에서는 위와 같이 설치된 Boost 라이브러리를 불러올 수 있습니다. 일부 locale, regex와 같이 Boost 라이브러리는 find_packageCOMPONENTS에 불러올 대상을 직접 명시해야 합니다.

참고: CMake FindBoost