web-dev-qa-db-ja.com

ブーストログとは何ですか、それを取得する方法とそれを構築する方法

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

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 and 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によるBoost Logging v2が見つかります。ただし、Andrew Semashevが話しているboost log v2ではない可能性がある構文からです。

私はすでにこれに非常に多くの時間を費やしているのを見て、私はいくつかの助けを得るだろうと思った、そしておそらく他の何人かの人はこの投稿と答えから利益を得て時間を節約するかもしれない。私はそれが以前に答えられたとは思わない、そして私が想定したこれらの変化のような答えは。

それで、ここに行きます:Andrew Semashevが話しているboost log v2とは何ですか?ジョン・トージョのそれと同じですか?そうでない場合、どこで見つけることができますか?そして、どのようにそれを構築しますか?

ありがとう

追伸これはVisual Studio Express 2010がインストールされたWindows上にあることを述べておきます

P.P.S.明らかにSVNである「バージョン2」も問題があると思いますが、この行には問題があります(以下のセルジオの回答を参照)

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

チュートリアルを終了すると、コンパイルとリンクが行われますが、出力は生成されません...

29
Cookie

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

確かに、このバージョンもboost :: filesystem v3に対するコンパイルに問題があるようです。

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

<define>BOOST_FILESYSTEM_VERSION=2

jamfileに。

これが機能しない場合は、ライブラリのシングルスレッドバージョンとマルチスレッドバージョンのどちらを構築しているかを確認してください。マルチスレッドのboost-logはもっとテストされるべきです(Andreyによると)。

これが役に立てば幸い...私は試したことがない...

編集:

どこに追加しますか?

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

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にはありません。

8
sergio

これは、LinuxボックスにBoost.Logをインストールするために使用した方法です。 Boostライブラリをビルドしてインストールする前の重要な注意点の1つは、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/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
14
yasouser

たくさんの検索とテストを行った後、私はこれを発見しました。

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

  • ここ からboost-logをチェックアウトし、<boost-log>/boost/logおよび<boost-log>/libs/log<boost>/boost/logおよび<boost>/libsにコピーします。

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

  • 走る

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

    そして

    ./b2 address-model=32
    

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

ノート:

  • 理由はわかりませんが、接頭辞が機能しませんでした。そこに構築されたライブラリを見ると期待していた。

  • bjamではなくb2を使用してください。

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

  • たくさんの警告を受けましたが、ログを作成するときはありませんでした。

誰かのお役に立てば幸いです。

2

Andrewの答えを正しく解釈した場合、彼の推奨は、Boost.Logのパッケージバージョンの1つを使用しないで、SourceForgeのboost-log SVNリポジトリからSVNチェックアウトを行うことです。トランクのファイルをざっと見たところ、v1への参照が見つかりませんでした。

そして、いいえ、彼はJohn TorjoのBoost.Log v2について話しているのではなく、リリース用にまだパッケージ化されていない彼のBoost.Logの新しいバージョンについて話していると確信しています。

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

1
Timo Geusch

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()が1197行のtext_file_backend.cppの不明なシンボルであると報告されました

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ソースを使用して再試行したところ、問題なくコンパイルされました。したがって、解決策は次のとおりです:boost-log 1.1を無視し、Subversionトランクを使用します

1
eatyourgreens