На странице очень кратко описан процесс сборки boost. Тем, кто знаком с процессом сбоки boost, статья может быть полезна в качестве шпаргалки или источника для копипасты. Начинающие могут рассматривать эту страницу как дополнительный материал к другим источникам. Не стоит рассматривать эту статью как основной источник информации по этой теме.
Сборка boost под Windows и Linux
Процесс сборки библиотеки boost для ОС Windows и Linux существенно не отличается, за исключением указания компилятора на ОС Windows. Далее кратко описаны необходимые шаги:
-
Скачать дистрибутив с официального сайта.
-
Распаковать в любую директорию, условно, <boost_path> .
-
cd <boost_path> .
-
Выполнить bootstrap.bat или bootstrap.sh . Для Windows при необходимости добавить аргумент gcc.
-
Почитать b2 --help, если интересно, как использовать билдер boost (b2).
-
Сборка.
Примеры команд для сборки boost под mingw:
b2 toolset=gcc link=shared --prefix=C:/boost install
b2 toolset=gcc threading=multi link=static runtime-link=shared --prefix=C:/boost install
b2 --build-type=complete toolset=gcc threading=multi link=static runtime-link=shared stage
Примеры команд для сборки boost под Visual C++:
b2 toolset=msvc variant=debug link=shared threading=multi runtime-link=shared stage
b2 toolset=vc140 link=static threading=multi runtime-link=shared address-model=32 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/ stage 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
Отдельное слово про Boost::log: с этой библиотекой часто возникают различные проблемы при сборке. Уйма времени потрачена на то, чтобы понять, почему эта библиотека не работает / не компонуется на той или иной платформе и как вывод во многих случаях лучшим решением было просто отказаться от нее.