29

それで、ブーストログについて良いことを聞きました。これはその存在を主張しています:

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

ただし、ブースト ログはブーストの一部ではありません。したがって、通常のブーストブランチにはありません。

ここからブースト ログを個別にダウンロードできます。

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

Andrew Semashev (上記のリンク) からの推奨事項は、「Boost.Log v2 (SVN トランクから) を使用してください」です。

https://boost-log.svn.sourceforge.net/svnroot/boost-logを見ると、バージョン 1 しか表示されません。

http://svn.boost.org/svn/boost/sandbox/を見ると、John Torjo によるブースト ロギング v2 が見つかります。ただし、Andrew Semashev が話しているブースト ログ v2 ではない可能性がある構文からだけです。

私はすでにこれにあまりにも多くの時間を費やしているのを見て、私は助けを得ることができると考えました。おそらく、他の人がこの投稿と回答から利益を得て、時間を節約できるかもしれません. 私はそれが以前に答えられたとは思わない.

それでは、Andrew Semashev が話しているブースト ログ v2 とは何ですか? ジョン・トルジョと同じですか?そうでない場合、どこで見つけることができますか? そして、どうやってそれを構築するのですか?

ありがとう

PSこれはVisual Studio Express 2010を搭載したWindows上にあることに言及する必要があります

どうやらSVNだけのPPS Guess「バージョン2」にも問題がありますが、この行には問題があります(以下のSergioの回答を参照)

<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";
}

チュートリアルから直接、コンパイルとリンクを行っていますが、出力は生成されません...

4

5 に答える 5

14

これは、LinuxボックスにBoost.Logをインストールするために私が従った方法です。Boostライブラリをビルドしてインストールする前の重要な注意事項:のようなスレッドライブラリがインストールされていることを確認してくださいpthreads。ほとんどのパッケージマネージャーはそれらを持っている必要があります。

ビルド手順は次のとおりです。

すでにソースからBoostをインストールしている場合は、次のステップに進んでください。それ以外の場合は、ここからダウンロードしてください(できれば最新バージョン(v1.46)。v1.45を使用しました)。たとえば、ブーストライブラリを抽出します/opt。Boost.Logと一緒にライブラリを構築できます。

  • SourceforgeからBoost.Logをダウンロードします。
  • Boost.Logソースアーカイブをフォルダーに抽出します–たとえば/opt/opt/boost-log-1.0/boostのログフォルダをブーストソースディレクトリにコピーします/opt/Boost_1_45_0/boost(で解凍したと仮定します/opt)。
  • 次のログフォルダを/opt/boost-log-1.0/libsboostlibsディレクトリにコピーします/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/libbjam~/.bashrc

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
于 2011-05-20T19:17:22.927 に答える
8

ブーストログv2は、リンクした投稿でAndreyが言っていることによると、トランクをチェックアウトすることで得られるものです。

実際、このバージョンでも、boost ::filesystemv3に対するコンパイルで問題が発生しているようです。

これがあなたの場合でもある場合、1つの回避策は追加後にコンパイルすることです

<define>BOOST_FILESYSTEM_VERSION=2

jamfileに。

これが機能しない場合は、ライブラリのシングルスレッドバージョンとマルチスレッドバージョンのどちらを構築しているかを確認してください。マルチスレッドのブーストログは、さらにテストする必要があります(Andreyによる)。

これがお役に立てば幸いです...私はそれを試していません...

編集:

どこに追加しますか?

サブセクションのセクションにrequirements追加します。boost-log/libs/log/build/Jamfile.v2shared

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

編集:Cookieのコメントから、次のBOOST_FILESYSTEM_VERSION=2ように指定する必要があります

       <link>msvc:<define>BOOST_FILESYSTEM_VERSION=2

ではありませんshared

于 2011-05-20T19:11:18.013 に答える
2

これをたくさん検索してテストした後、私が見つけたもの。

  • 必要な Boost をダウンロードします (安定版リリース 1.51 でテストしました)。

  • ここからブーストログをチェックアウトし、 <boost-log>/boost/logand<boost-log>/libs/log<boost>/boost/logandをコピーします<boost>/libs

  • サポートされているコンパイラがあることを確認してください(私の問題はそれでした!.gcc 4.1.7で動作しました)

  • 走る

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

    ./b2 address-model=32
    

すべてが計画どおりに進む<boost>/stage/libsと、コンパイルされたライブラリ (libboost_log.so を含む) を含むディレクトリが作成されます。

ノート:

  • 理由はわかりませんが、プレフィックスが機能しませんでした。そこにライブラリが構築されるのを期待していました。

  • 使用しb2ないでくださいbjam

  • で変更する必要はありませJamfile<boost-log>

  • たくさんの警告が表示されましたが、ログを作成するときは表示されませんでした。

それが誰かに役立つことを願っています。

于 2012-09-27T14:40:07.827 に答える
1

アンドリューの答えを正しく解釈すると、Boost.Log のパッケージ バージョンのいずれかを使用せず、SourceForge の boost-log SVN リポジトリから SVN チェックアウトを行うことをお勧めします。そこでトランク内のファイルをざっと見てみましたが、v1 への参照が見つかりません。

いいえ、彼が話しているのは John Torjo の Boost.Log v2 についてではなく、まだリリース用にパッケージ化されていない彼の Boost.Log の新しいバージョンについて話しているに違いありません。

Boost.Log を使用していますが、これまでのところかなり満足しています。あなたの質問は、1.46.1 で Boost.Log を構築するために何をすべきかを理解するのに実際に役立ちました...

于 2011-05-20T18:59:02.727 に答える
1

boost 1.51.0 で boost-log-1-1 をビルド中に、1197 行目の text_file_backend.cpp に不明なシンボルがある

私は Windows MSVC 2010 を使用していますが、私が抱えていた問題は他のプラットフォームにも共通していると思われます。boost.log ソースを boost 1.51 ソース ツリーにコピーし、指示に従って bootstrap.bat と .\b2 を実行しました。ビルドは失敗し、get_generic_category() が text_file_backend.cpp の行 1197 の不明なシンボルであると不平を言った

text_file_backend.cpp の 1197 行目を次のように変更しました。

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

ビルドを再実行しました。ビルドは機能しました。

これが、boost 1.51 で boost-log ライブラリの構築に問題がある他の誰かの助けになることを願っています。

この変更の詳細については、 http://www.boost.org/doc/libs/1_51_0/libs/system/doc/reference.html#Deprecated-namesを参照してください。

編集: Subversion トランクから直接ブースト ログ ソースを使用して再試行したところ、正常にコンパイルされました。したがって、解決策は次のとおりです。boost-log 1.1 を無視し、Subversion トランクを使用します。

于 2012-09-13T12:38:38.570 に答える