2013-08-24 84 views
11

我想測試Boost.Log庫。不幸的是,我收到鏈接錯誤。Boost.Log鏈接GNU/Linux下的錯誤

我使用Arch Linux的,和我通過內置的包管理器安裝pacman升壓頭文件和庫:

  • 升壓1.54.0-3
  • 升壓庫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/目錄下,只有動態鏈接的Boost庫,其擴展名爲.so

也許,有人有線索這裏發生了什麼問題。

謝謝。

+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 
[鏈接錯誤的