Библиотека должна строиться и работать с достаточно совместимым компилятором. Библиотека успешно построена и протестирована на следующих платформах:
- Windows XP, Windows Vista, Windows 7. MSVC 8.0 SP1, MSVC 9.0 и более новые.
- Linux. GCC 4.5 и новее. Старые версии также могут работать, но они не были протестированы.
- Linux. Intel C++ 13.1.0.146 Build 20130121
- Linux. Кланг 3.2 и новее.
Следующие компиляторы/платформы не поддерживаются и, скорее всего, не будут компилировать библиотеку:
- Компиляторы C++11 со стандартными библиотеками, отличными от C++11 (например, Clang с libstdc++ из GCC 4.2). Пожалуйста, используйте стандартную библиотеку C++11 в режиме C++11.
- MSVC 8.0 (без SP1) и старше.
- GCC 4.2 и старше.
- Borland C++ 5.5.1 (бесплатная версия). Новые версии могут работать или не работать.
- Solaris Studio 12.3 и старше.
- Windows 9x, ME, NT4, 2000 и старше не поддерживаются.
Повышаю. Лог должен быть совместим со всеми аппаратными архитектурами, поддерживаемыми Boost. Однако в случае 32-битной архитектуры x86 библиотеке требуется процессор класса i586 для работы.
Версии GCC с 4.5 поддерживают оптимизацию времени соединения (LTO), когда большинство оптимизаций и генерация двоичного кода происходит на стадии соединения. Это позволяет выполнять более продвинутые оптимизации и создавать более быстрый код. К сожалению, он не очень хорошо работает с проектами, содержащими исходные файлы, которые должны быть скомпилированы с различными вариантами компилятора. Повышаю. Лог является одним из таких проектов, некоторые части его источников содержат оптимизации для современных ЦП и не будут работать на старых ЦП. Включение LTO для повышения. Лог будет создавать двоичные файлы, несовместимые со старыми процессорами (баг GCC), что, вероятно, приведет к сбоям во времени выполнения. Эта проблема исправлена в GCC 5.1 и более новой. По этой причине LTO не поддерживается в Boost. Зарегистрируйтесь в GCC версии 5.1.
Существует ошибка GCC, которая может вызвать сбои компиляции при использовании аргумента командной строки<-march=native
>. Рекомендуется избегать использования аргумента<-march=native
>(или свойства<instruction-set=native
>bjam) и вместо этого явно указывать целевой процессор (например,<instruction-set=sandy-bridge
>).
Для компиляции библиотеки с этими составителями необходима специальная подготовка. Во-первых, в случае MinGW или Cygwin убедитесь, что вы установили последнюю версию GCC. Библиотека, скорее всего, не будет компилироваться с GCC 3.x.
Во-вторых, в какой-то момент библиотеке потребуется инструмент компилятора сообщений<mc.exe
>, который недоступен в MinGW, Cygwin и некоторых версиях MSVC Express Edition. Как правило, скрипты сборки библиотеки автоматически обнаруживают, присутствует ли компилятор сообщений в системе, и отключают часть библиотеки, связанную с журналом событий, если это не так. Если требуется поддержка журнала событий, и она не найдена в системе, у вас есть три варианта решения проблемы. Рекомендуемым решением является получение оригинала<mc.exe
>. Этот инструмент доступен в Windows SDK, который можно бесплатно скачать с сайта Microsoft (например,здесь). Также этот инструмент должен быть доступен в Visual Studio 2010 Express Edition. Во время компиляции<mc.exe
>должен быть доступен через один из каталогов в переменной среды<PATH
>.
Другой способ — попытаться использовать инструмент<windmc.exe
>, распределенный с MinGW и Cygwin, который является аналогом оригинала<mc.exe
>. Для того, чтобы сделать это, вам нужно будет исправить Boost. Постройте файлы (в частности, файл<tools/build/tools/mc.jam
>), как описано вэтомбилете. После этого вы сможете указать<mc-compiler=windmc
>опцию для создания библиотеки.
В случае, если обнаружение компилятора сообщений по какой-либо причине не удается, вы можете явно отключить поддержку бэкэнда журнала событий, определив макрос конфигурации<BOOST_LOG_WITHOUT_EVENT_LOG
>при создании библиотеки. Это устранит необходимость в компиляторе сообщений. См.этот разделдля большего количества вариантов конфигурации.
Пользователи MinGW в Windows XP могут быть затронуты ошибкойв msvcrt. dll, который связан с операционной системой. Баг проявляется как сбой, в то время как библиотека форматирует записи журнала. Эта проблема не является специфической для Boost. Журнал и может также отображаться в различных контекстах, связанных с управлением локальными и IO-потоками.
Поддержка Cygwin является предварительной. Версия GCC по умолчанию, доступная в Cygwin (4.5.3 на момент написания этой статьи), не может компилировать библиотеку из-за ошибок компилятора. Вам придется построить новый GCC из источников. Даже тогда немного подъём. Функциональность журнала недоступна. В частности, syslog backend на основе сокетов не поддерживается, так как он основан наBoost.ASIO, который не компилируется на этой платформе. Тем не менее, поддержка родного сислога все еще существует.