Сборка boost. Шпаргалка
На странице очень кратко описан процесс сборки boost. Тем, кто знаком с процессом сбоки boost, статья может быть полезна в качестве шпаргалки или источника для копипасты. Начинающие могут рассматривать эту страницу как дополнительный материал к другим источникам. Не стоит рассматривать эту статью как основной источник информации по этой теме.
Сборка boost под Windows и Linux
Процесс сборки библиотеки boost для ОС Windows и Linux существенно не отличается, за исключением указания компилятора на ОС Windows. Далее кратко описаны необходимые шаги:
- Скачать дистрибутив с официального сайта.
- Распаковать в любую директорию, условно, .
- cd.
- Выполнить 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 background-color: inherit; color: inherit; font-family: inherit; font-size: 1rem;»>++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: с этой библиотекой часто возникают различные проблемы при сборке. Уйма времени потрачена на то, чтобы понять, почему эта библиотека не работает / не компонуется на той или иной платформе и как вывод во многих случаях лучшим решением было просто отказаться от нее.
Работа с Boost и CMake под Windows
Приветствую! Составил небольшую заметку по настройке и статической линковке библиотеки Boost с помощью CMake под Windows. Boost представляет собой набор библиотек на языке C++ с широким функционалом и является в некотором роде полигоном для апробирования некоторых идей, которые затем попадают в новые стандарты языка С++. Для установки и настройки CMake проекта прошу под кат!
Установка Boost
1. Скачивание и подготовка библиотеки
Скачайте библиотеку по адресу https://www.boost.org/users/download/ и распакуйте архив, например, в директорию C:/Boost. Затем перейдите в директорию и запустите файл bootstrap.bat, дождитесь окончания его работы. После этого запустите b2.exe и дождитесь окончания его работы. b2.exe осуществляет компиляцию исходного кода библиотек и у меня этот процесс занял более получаса. Точнее сказать не могу, так как оставил его работать и лёг спать, утром всё было готово.
2. Настройка CMake
Для подключения библиотеки Boost к вашему проекту добавьте следующие строки в CMakeLists.txt.
set (BOOST_ROOT "C:/boost_1_78_0/") # Путь к библиотеке Boost set (CMAKE_CXX_STANDARD 20) set (Boost_NO_SYSTEM_PATHS ON) set (Boost_USE_MULTITHREADED ON) set (Boost_USE_STATIC_LIBS ON) set (Boost_USE_STATIC_RUNTIME OFF) set (BOOST_ALL_DYN_LINK OFF) # Подключаем необходимые модули. Для примера подключим program_options find_package (Boost REQUIRED COMPONENTS program_options REQUIRED) # Если библиотека найдена, то if (Boost_FOUND) include_directories (SYSTEM $) # подключаем заголовочные файлы add_executable (Boost_test "main.cpp") # Создаем исполняемый файл для нашего проекта target_link_libraries (Boost_test $) # подключаем библиотеку endif ()
Обратите внимание на строку 16 – мы создаем исполняемый файл нашего проекта только в том случае, если библиотека найдена. Это условие не обязательно, но если вы работаете, например, в Visual Studio, то в случае отсутствия библиотеки, студия не будет отображать доступную к запуску цель, но и ошибки при компиляции не выдаст тоже. Использовать ли это условие или нет – выбор за вами.
Boost в действии
Давайте теперь для примера добавим в проект файл main.cpp со следующим кодом, взятым из примера работы с компонентом program_options библиотеки Boost:
#include #include using namespace std; namespace po = boost::program_options; int main(int argc, char* argv[]) < po::options_description desc("Allowed options"); int c; desc.add_options() ("help,h", "produce help message") ("compression,c", po::value()->default_value(3), "set compression level") ; po::variables_map vm; po::store(po::parse_command_line(argc, argv, desc), vm); po::notify(vm); if (vm.count("help")) < cout if (vm.count("compression")) < cout << "Compression level was set to " << vm["compression"].as() else < cout return 0; >
Program_options является обработчиком параметров командной строки и предоставляет удобный интерфейс для работы. В рассмотренном фрагменте создается экземпляр объекта program_options desc и устанавливается заголовок для отображения справки. Справка будет вызываться параметром –help или -h. Далее регистрируются доступные параметры, с указанием через запятую полной и укороченной версии и описания команды. Укороченная версия параметров не является обязательной и может быть опущена. Для параметра compression устанавливается значение по умолчанию = 3. Далее идёт обработка введённых параметров.
П.с. из-за установленного значения по умолчанию код в строке 30 никогда не выполняется.
Скомпилируйте программу и запустите её передавая следующие комбинации:
- Boost_test.exe
- Boost_test.exe -c 5
- Boost_test.exe -h
- Boost_test.exe –help
Справка о доступных параметров будет выглядеть так:
Как установить Boost C++ на Ubuntu 22.04
Для разработчика C++ наличие всех необходимых инструментов для облегчения разработки является дополнительным преимуществом. Библиотека Boost C++ содержит все библиотеки с открытым исходным кодом, необходимые для разработки на C++. Эти библиотеки поставляются в комплекте с Boost C++. После его установки вы можете начать использовать библиотеки в своем коде во время разработки.
Мы рассмотрим полную установку Boost C++ на Ubuntu 22.04.
Два способа установки Boost C++ в Ubuntu 22.04
У вас есть два варианта установки библиотеки Boost C++ в Ubuntu 22.04. Во-первых, вы можете установить его через репозиторий Ubuntu apt, но это не даст вам последнюю версию. Кроме того, вы можете установить его из исходного кода, что дает вам доступ к последней версии.
1. Установите Boost C++ через APT
Установка его через репозиторий apt — наиболее удобный способ быстрой установки Boost C++ на Ubuntu 22.04. Начните с обновления репозитория.
$ sudo apt update

Следующим шагом будет установка пакета libboost-all-dev, который содержит библиотеки разработки Boost C++.
$ sudo apt install libboost-all-dev

Пакеты Boost C++ имеют большой размер. Нажмите y, чтобы подтвердить установку. Убедитесь, что в вашей системе достаточно места для установки.

После завершения установки пакета убедитесь, что установка прошла успешно, проверив версию установки Boost C++.
$ dpkg -s libboost-dev | grep version

Установленная версия 1.74, но это не последняя версия. Чтобы получить последнюю версию, используйте второй метод установки, который мы обсудим позже в этой статье.
Когда вы устанавливаете Boost C++ через APT, вы можете удалить установленный пакет и зависимости с помощью следующей команды:
$ sudo apt autoremove libboost-all-dev

2. Установите Boost C++ через исходный код
Для тех, кто хочет испачкать руки, установив последние библиотеки Boost C++, вы должны установить их через исходный код.
Начните с посещения веб-сайта Boost C++ и откройте раздел «Загрузки». Найдите параметр «Ускорить загрузку» и нажмите «Текущий выпуск».

Появится список доступных текущих выпусков, которые вы можете загрузить. Щелкните правой кнопкой мыши параметр «tar.gz» и скопируйте его ссылку. Вы также можете нажать на нее, чтобы начать загрузку.

На вашем терминале используйте wget для загрузки файла через терминал. Используйте ссылку, которую вы скопировали с помощью команды wget, чтобы начать загрузку.

После завершения загрузки перейдите в каталог загрузки. Здесь мы перемещаем файл в наши «Загрузки», чтобы убедиться, что мы загрузили файл tar, содержащий исходный код.

Извлеките архивный файл с помощью следующей команды:
$ tar xvf boost_1_81_0_tar.gz

Перейдите в извлеченный каталог «Boots».
$ cd boost_1_81_0 /

Мы должны установить необходимые зависимости для поддержки установки Boost C++. Выполните следующую команду, и все зависимости будут установлены:
$ sudo apt install build-essential python3-dev g++ autotools-dev libicu-dev libbz2-dev -y

Затем нам нужно настроить начальную загрузку Boost. Следующая команда запускает сценарий Bootstrap и создает механизм B2:
$ sudo . / bootstrap.sh —prefix = / usr /

Теперь вы можете запустить сгенерированный движок B2.

Наконец, установите Boost C++ с помощью пакета B2.
$ sudo . / b2 install

После запуска программы установка завершится, и в вашей системе будут доступны библиотеки Boost C++. Затем вы можете вызывать их при написании проектов на C++.
Заключение
Boost C++ — удобная библиотека для работы с проектами C++. Он предлагает различные библиотеки, которые вы можете использовать. Мы рассмотрели два способа установки на Ubuntu 22.04. Вы можете установить его напрямую через APT или используя его исходный код. Используйте тот способ, который удобен для вашего случая.
Все права защищены. © Linux-Console.net • 2019-2023
Boost.Asio C++ Tutorial
Тем, кто не знает, что такое Boost.Asio, посвящается. Boost.Asio — это кросс-платформенная библиотека С++ для сетевого и низкоуровневого ввода-вывода программирования, которая предоставляет разработчикам, использующим асинхронную модель, современный подход программирования на С++. В нашем случае это будет С++11.
Версия Boost, которую я использую — Boost Version 1.60.0. Скачать можно тут.
Опираясь на свой опыт, хотелось бы сразу решить вопрос с установкой библиотеки. Я использую MVS 15, следовательно ставить Boost мы будем туда.
Установка библиотеки
- После скачивания архива с библиотекой, распаковываем его на Локальный диск (лучше) С.
- Открываем папку boost_1_60_0 и запускаем файл bootstrap.bat
- После того как bootstrap.bat отработает, в папке появится файл b2.exe
- Запускаем b2.exe и ждем от 5 минут до 1,5 часа (зависит от «машины»)
- Когда b2.exe отработает, ваша библиотека будет в собранном состоянии, осталось только её подключить в нашу IDE.
- Запускаем MVS, в вкладке «Вид» находим Property Manager
- Двойным кликом открываем страницу свойств папки Debug | Win32 и кликаем на VC++ Directories
- В колонке Include Directories выбираем изменить, далее нажимаем на «папку со *» New Line и указываем ей путь к папке boost_1_60_0, жмём ОК.
- Проводим аналогию с некоторыми изменениями для колонки Library Directoties, но для неё указываем путь C:\boost_1_60_0\stage\lib, жмём ОК.
- Библиотека подключена!
Basic Skills
Первые пять уроков, или как они называются в учебнике Timer, будут вводными в фундаментальные понятия, необходимые для использования инструмента Asio. Перед тем, как погрузиться в сложный мир сетевого программирования, эти Timers (уроки) иллюстрируют базовые навыки, используя простые асинхронные таймеры.
Урок 1. — Использование синхронного таймера. «Timer.1 — Using a timer synchronously«
Этот урок вводит нас в Asio, показывая, как выполняется ожидание по таймеру. Начнём мы с подключения заголовочных файлов. Все Asio классы представлены в виде файлов с расширением Asio.hpp.
#include #include
Так как в этом примере мы используем таймеры, то мы должны включить соответствующий файл заголовка Boost.Date_Time.
#include
Все программы, которые используют Asio, должны иметь, по крайней мере, один объект io_service. Этот класс обеспечивает доступ к функциям ввода / вывода. Мы объявляем объект этого типа первым делом в главной функции. Но перед этим я хотел бы немного облегчить написание нашего кода, при помощи пространства имени. После всех подключенных ЗФ, пишем:
using namespace std; using namespace boost::asio;
Думаю тут особо вопросов не должно возникнуть.
int main() < io_service io;
Далее мы объявляем объект типа deadline_timer. Основные классы Asio, которые обеспечивают функции ввода/вывода (или как в данном случае функциональность нашего Таймера) всегда берут ссылку на io_service в качестве первого аргумента конструктора. Второй аргумент конструктора установка таймера 5 секунд.
deadline_timer t(io, boost::posix_time::seconds(5));
В этом простом примере мы выполняем блокирующие ожидание по таймеру. То есть, вызов deadline_timer :: wait () не вернется, пока таймер не отсчитает 5 секунд после того, как он был создан. Deadline timer, всегда находится в одном из двух состояний: «истек»(expired)или «не истек»(not expired). Если deadline_timer::wait() функция принимает аргумент expired, то функция сразу же вернёт значение.
t.wait();
Наконец мы выводим всеми любимый и знакомый «Hello, World!» сообщение, чтобы показать, когда таймер истек «expired».
cout
Полный код программы в оригинале:
#include #include #include int main()
Полный код программы в личном варианте:
#include #include #include using namespace std; using namespace boost::asio; int main()
