На странице очень кратко описан процесс сборки boost. Тем, кто знаком с процессом сбоки boost, статья может быть полезна в качестве шпаргалки или источника для копипасты. Начинающие могут рассматривать эту страницу как дополнительный материал к другим источникам. Не стоит рассматривать эту статью как основной источник информации по этой теме.
Сборка boost под Windows и Linux
Процесс сборки библиотеки boost для ОС Windows и Linux существенно не отличается. Далее кратко описаны необходимые шаги:
-
Скачать дистрибутив с официального сайта.
-
Распаковать архив
-
Зайти в распакованный архив
-
Выполнить bootstrap.bat (Windows) или bootstrap.sh (Linux).
-
Выполнить b2 с необходимыми параметрами
Например, процесс скачивания и сборки на Linux может выглядеть так:
# Ссылка на архив, актуальные ссылки искать на https://www.boost.org/users/download
url=https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz
build_dir=boost-build
# Скачиваем архив
wget $url
# Распаковываем архив
tar -xzf boost_1_86_0.tar.gz
pushd boost_1_86_0
# Запускаем bootstrap
./bootstrap.sh
prefix=../$build_dir
# Создаём директорию для сборки
mkdir -p $prefix
# Запускаем сборку
./b2 -j 16 --prefix=$prefix install > ../build.log
popd
Скачать скрипт для сборки boost для Linux / WSL : build-boost.sh
Аналогичный сценарий для Windows в PowerShell:
# Ссылка на архив, актуальные ссылки искать на https://www.boost.org/users/download
$url = "https://archives.boost.io/release/1.86.0/source/boost_1_86_0.zip"
$build_dir = "boost-build"
# Скачиваем архив
Invoke-WebRequest -Uri $url -OutFile boost_1_86_0.zip
# Распаковываем архив
Expand-Archive boost_1_86_0.zip -DestinationPath .
pushd boost_1_86_0
# Запускаем bootstrap
.\bootstrap.bat
$prefix = "..\$build_dir"
# Создаём директорию для сборки
mkdir -ErrorAction SilentlyContinue $prefix
# Запускаем сборку
.\b2 -j 16 --prefix=$prefix install > ..\build.log
popd
Скачать скрипт для сборки boost для PowerShell : build-boost.ps1
Сборка может занимать ~ от 5 до 40 минут в зависимости от параметров сборки и конфигурации машины, не включая времени на скачивание и распаковку. Общий размер собранных библиотек может достигать 1.5 гигабайт при настройках по умолчанию.
Чтобы настроить сборку с нужными параметрами необходимо передать эти параметры при вызове b2. Вот некоторые полезные параметры:
-
--prefix=directory - директория, куда будут скопированы заголовочные файлы и библиотеки после сборки. Настоятельно рекомендуется указывать этот параметр
-
-j N - выполнять сборку в N потоков - может сильно ускорить компиляцию
-
toolset=compiler - использовать для сборки компилятор compiler (должен быть установлен). Например toolset=vc142 означает сборку компилятором Microsoft Visual C++ 2019. Также могут быть указаны такие компиляторы как gcc, mingw, clang и другие. Полный список компиляторов можно найти на странице B2 User Manual.
-
cxxflags=flags - дополнительные опции, передаваемые компилятору, например cxxflags="-std=c++17".
-
link=type - указывает собирать статические или динамические библиотеки, возможные значения: link=static, link=shared.
-
address-model=arch - явно указывает генерировать 32- или 64-разрядный код. Возможные значения: address-model=32, address-model=64.
Полный набор флагов и свойств можно найти на странице B2 User Manual.
Примеры команд для сборки boost на mingw:
b2 -j 4 toolset=mingw link=shared --prefix=C:/boost install
b2 toolset=gcc threading=multi link=static runtime-link=shared --prefix=C:/boost install
Примеры команд для сборки boost на Visual C++:
b2 -j 8 toolset=msvc variant=debug link=shared threading=multi runtime-link=shared --prefix=C:/boost install
b2 toolset=vc141 link=static threading=multi runtime-link=shared address-model=32
Пример команды для сборки boost с помощью gcc на Linux:
./b2 -j 16 toolset=gcc link=shared runtime-link=shared address-model=64 --cxxflags="-fPIC -std=c++17" --prefix=/home/user/boost install
Сборка кросс-компилятором под ARM
-
Скачать и распаковать.
-
Запустить bootstrab.sh .
-
Открыть project-config.jam, заменить «using gcc» на «using gcc : arm : arm-linux-gnueabihf-g++».
-
Добавить путь к тулчейну в переменную PATH (если не сделано).
-
В командной строке b2 указать необходимые параметры: toolset=gcc-arm cxxflags="-std=c++11".
-
Сборка.
Итоговая строка b2 может выглядеть так:
./b2 toolset=gcc-arm cxxflags="-std=c++11" --prefix=/home/user/boost-arm/ install
Примечание: флаг cxxflags="-std=c++11″ в некоторых случаях может помочь при компоновке boost::log.
Замечания о статической компоновке
На дистрибутивах с архитектурой x86_64 статические библиотеки, устанавливаемые через пакетный менеджер из репозиториев, могут быть собраны без флага -fPIC. Это не позволяет осуществлять статическую компоновку библиотеки к динамической библиотеке, что иногда бывает нужно. Для решения проблемы нужно собрать библиотеки с указанием флага -fPIC. Кроме того, желательно явно указать стандарт языка при сборке библиотек. Команда сборки библиотек Boost может выглядеть так:
./b2 link=static threading=multi cxxflags="-fPIC -std=c++11" install --prefix=/path-to-install
Полное описание всех возможностей и свойств b2 можно найти на странице B2 User Manual.
