2013-08-24 2 views
11

Boost.Logライブラリをテストしたいと思います。残念ながら、リンクエラーが発生します。 Boost.Log GNU/Linuxでエラーをリンクする

私はアーチのLinuxを使用して、私は組み込みのパッケージマネージャ pacmanを経由してブーストヘッダとライブラリをインストール:

  • ブースト1.54.0-3
  • ブースト-libsの1.54.0-2

g++ log.cpp -lboost_log -lpthread経由official siteから簡単な例をコンパイルすると、私は次のエラーを取得:

log.cpp:(.text+0x42): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()' 
log.cpp:(.text+0x9b): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()' 
... 

私はWhy my application fails to link with Boost.Log?を読みましたが、リンクエラーを解決できませんでした。 boost::log::v2s_mt_posix::trivial::logger::get()が入っているライブラリが静的にリンクされているというヒントしか得られません。しかしディレクトリ/usr/lib/の下には、拡張子が.soの動的にリンクされたBoostライブラリしかありません。

多分、誰かがここで何がうまくいかないのかという手掛かりがあります。

ありがとうございます。

+0

[リンカエラーの可能性の重複をブーストログを連携しながら、チュートリアル(未定義の参照)](http://stackoverflow.com/questions/23137637/linker-error-while-linking -boost-log-tutorial-undefined-references) –

答えて

13

あなたはBOOST_LOG_DYN_LINKを定義する必要があります。

g++ -DBOOST_LOG_DYN_LINK blog.cpp -lboost_log -lpthread 
+0

コンパイル時に-DBOOST_LOG_DYN_LINKを試しましたが、それは動作します。 – CCC

0

あなたがcmakeを使用している場合:

find_package(Boost REQUIRED COMPONENTS system log) 
target_link_libraries(credential ${Boost_SYSTEM_LIBRARY} ${Boost_LOG_LIBRARY}) 

と使用を:

#define BOOST_LOG_DYN_LINK 1 
関連する問題