Подтвердить что ты не робот

Что такое бустерный журнал, как его получить и как его построить?

Итак, я слышал хорошие вещи о бугеле. Это утверждает его существование:

http://boost-log.sourceforge.net/libs/log/doc/html/index.html

Это учебник:

http://boost-log.sourceforge.net/libs/log/doc/html/log/tutorial.html#log.tutorial.trivial

Однако, форсированный журнал не является частью повышения. Следовательно, не в регулярной ветки boost.

Здесь можно загрузить дополнительный буфер:

http://sourceforge.net/projects/boost-log/

Возможно, я просто слишком неопытен, но я считаю, что инструкции по установке очень плохие. Тем не менее, после загрузки и копирования папок boost и lib в папку boost, я могу запустить bootstrap и bjam. Это приводит к ошибкам, связанным с версиями Boost.Filesystem, аналогичными тем, которые упомянуты здесь:

http://boost.2283326.n4.nabble.com/Boost-Log-compilation-on-msvc-2010-fail-td3488502.html

Рекомендация Эндрю Семашева (в ссылке выше) заключается в том, что "Пожалуйста, используйте Boost.Log v2 (из соединительной линии SVN)".

Глядя на https://boost-log.svn.sourceforge.net/svnroot/boost-log, я могу видеть только версию 1.

Глядя на http://svn.boost.org/svn/boost/sandbox/, я могу найти boost logging v2 от John Torjo. Однако только из синтаксиса, который не может быть журналом boost v2, о котором говорит Эндрю Семашев.

Увидев, что я трачу слишком много часов на это, я подумал, что я получу какую-то помощь, и, возможно, некоторые другие люди могут извлечь выгоду из этого поста и ответов и сэкономить некоторое время. Я не думаю, что на это был дан ответ раньше, и ответы, подобные этим изменениям, я предположил.

Итак, вот так: Что такое boost log v2, о котором говорит Эндрю Семашев? Это то же самое, что у Джона Торхо? Если нет, где я могу его найти? И как его построить?

Спасибо

P.S. Я должен упомянуть об этом в Windows с Visual Studio Express 2010

P.P.S. Угадайте, что "версия 2", которая, по-видимому, является только SVN, также имеет проблемы, но с этой строкой (см. Ответ Серхио ниже)

<toolset>msvc:<define>BOOST_FILESYSTEM_VERSION=2

в файле bjam, по крайней мере, я могу скомпилировать. Однако этот файл

#include <boost/log/trivial.hpp>
int main(int, char*[])
{
    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
    BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
    BOOST_LOG_TRIVIAL(info) << "An informational severity message";
    BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
    BOOST_LOG_TRIVIAL(error) << "An error severity message";
    BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}

прямо из учебника, хотя и теперь компилирует и связывает, не производит никакого вывода...

4b9b3361

Ответ 1

boost log v2 - это просто то, что вы получаете, проверяя багажник, согласно тому, что говорит Андрей в сообщении, которое вы связываете.

действительно, похоже, что эта версия тоже имеет проблемы с компиляцией против boost:: filesystem v3.

если это также ваш случай, один способ обхода компиляции после добавления

<define>BOOST_FILESYSTEM_VERSION=2

в файл jamfile.

Если это не сработает, проверьте, строите ли вы одну поточную или многопоточную версию библиотек. многопоточный бут-журнал должен быть более проверенным (по словам Андрея).

надеюсь, что это поможет... Я не пробовал...

EDIT:

где добавить?

Я бы добавил его в раздел requirements раздела boost-log/libs/log/build/Jamfile.v2, shared:

project boost/log
    : source-location ../src
    : requirements
       <link>shared:<define>BOOST_LOG_DLL
       <link>shared:<define>BOOST_FILESYSTEM_VERSION=2

EDIT: из комментария Cookie, BOOST_FILESYSTEM_VERSION=2 следует указать как

       <link>msvc:<define>BOOST_FILESYSTEM_VERSION=2

не в shared.

Ответ 2

Это метод, который я использовал для установки Boost.Log в моем ящике Linux. Перед созданием и установкой библиотек Boost важно иметь важное значение: убедитесь, что вы установили библиотеку потоков, например pthreads. Большинство менеджеров пакетов должны иметь их.

Вот шаги сборки:

Если вы уже установили Boost из исходного кода, то его прекращение продолжит следующий шаг. В противном случае загрузите его из здесь (желательно последняя версия (v1.46). Я использовал v1.45). Извлеките библиотеки boost, скажем: /opt. Мы можем создавать библиотеки вместе с Boost.Log.

  • Загрузите Boost.Log из Sourceforge.
  • Извлеките исходный архив Boost.Log в папку - скажем /opt. Скопируйте папку журнала в: /opt/boost-log-1.0/boost в каталог источника ускорения /opt/Boost_1_45_0/boost (предположив, что вы извлекли его в /opt).
  • Скопируйте папку журнала в: /opt/boost-log-1.0/libs в каталог boost libs /opt/Boost_1_45_0/libs (предположим, что вы извлекли его в /opt). Если вы не установили другие библиотеки Boost, выполните следующие действия:
    • cd /opt/Boost_1_45_0
    • .bootstrap.sh --show-libraries - это список всех библиотек, которые будут созданы и установлены. Вы должны увидеть log как часть его.
    • .bootstrap.sh --with-libraries=all --prefix=/usr/local --includedir=/usr/local/include --libdir=/usr/local/lib
    • ./bjam install

Наконец, убедитесь, что $LD_LIBRARY_PATH имеет /usr/local/lib (путь, указанный в bjam для установки встроенных библиотек) как часть его. Если вы не отредактируете свой ~/.bashrc и добавьте следующее:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH

Ответ 3

После многого поиска и тестирования этого я узнал.

  • Загрузите желаемый Boost (я тестировал его на стабильном выпуске 1.51)

  • Выполните бут-бут из здесь и скопируйте <boost-log>/boost/log и <boost-log>/libs/log в <boost>/boost/log и <boost>/libs

  • Убедитесь, что у вас есть поддерживаемый компилятор (моя проблема в том, что!. Он работал с gcc 4.1.7)

  • Run

    ./bootstrap.sh --with-libraries=all --prefix=<dir_to_install>
    

    и

    ./b2 address-model=32
    

Если все идет по плану, будет создан каталог <boost>/stage/libs с скомпилированными библиотеками (в том числе libboost_log.so)

Примечания:

  • Я не уверен, почему, но префикс не работал. Я ожидал увидеть библиотеки, построенные там.

  • Используйте b2 not bjam.

  • Не нужно изменять Jamfile в <boost-log>.

  • У меня есть куча предупреждений, но нет при создании журнала.

Я надеюсь, что это поможет кому-то.

Ответ 4

Если я правильно интерпретирую Эндрю, его рекомендация состоит в том, чтобы не использовать одну из упакованных версий Boost.Log, а выполнять проверку SVN из репозитория SVN с буфером в SourceForge. Я быстро просмотрел файлы в багажнике и не могу найти ссылку на v1.

И нет, я почти уверен, что он не говорит о John Torjo Boost.Log v2, но более новая версия его Boost.Log, которая еще не была упакована для релиза.

Мы используем Boost.Log, и до сих пор я доволен этим; ваш вопрос на самом деле помог мне разобраться, что делать, чтобы построить Boost.Log с 1.46.1...

Ответ 5

Неизвестный символ в text_file_backend.cpp в строке 1197 при построении boost-log-1-1 с boost 1.51.0

Я использую Windows MSVC 2010, но я подозреваю, что проблема, которая у меня была, может быть распространена и на других платформах. Я скопировал источники boost.log в исходное дерево boost 1.51 и запустил bootstrap.bat и. \B2 в соответствии с инструкциями. Сбой сборки, жалуясь, что get_generic_category() является неизвестным символом в text_file_backend.cpp в строке 1197

Я изменил строку 1197 text_file_backend.cpp, чтобы теперь она читала

system::error_code(system::errc::io_error, system::generic_category()));

и я снова запустил сборку. Сборка работала.

Я надеюсь, что это поможет кому-то другому, у которого есть проблемы с созданием библиотеки буфера с boost 1.51

Подробнее об этом изменении см. http://www.boost.org/doc/libs/1_51_0/libs/system/doc/reference.html#Deprecated-names.

Изменить: я просто попробовал снова использовать источники бухгалтерии напрямую из Subversion trunk, и он скомпилировал OK. Таким образом, решение: игнорировать boost-log 1.1 и использовать соединительную линию Subversion.