PVOID - Сборка boost. Шпаргалка

Сборка boost. Шпаргалка

 На странице очень кратко описан процесс сборки 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: с этой библиотекой часто возникают различные проблемы при сборке. Уйма времени потрачена на то, чтобы понять, почему эта библиотека не работает / не компонуется на той или иной платформе и как вывод во многих случаях лучшим решением было просто отказаться от нее.