2013-08-24 31 views
11

Tôi muốn kiểm tra thư viện Boost.Log. Thật không may, tôi nhận được lỗi liên kết.Boost.Log liên kết lỗi dưới GNU/Linux

tôi sử dụng Arch Linux, và tôi cài đặt tiêu đề Boost và thư viện thông qua xây dựng trong quản lý gói pacman:

  • tăng 1.54.0-3
  • tăng-libs 1.54.0-2

Khi biên dịch các ví dụ đơn giản từ official site qua g++ log.cpp -lboost_log -lpthread, tôi nhận được lỗi sau:

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()' 
... 

Tôi đã đọc Why my application fails to link with Boost.Log?, nhưng tôi không thể giải quyết các lỗi liên kết. Nó chỉ cho tôi gợi ý rằng thư viện nơi boost::log::v2s_mt_posix::trivial::logger::get() được liên kết tĩnh. Nhưng theo thư mục /usr/lib/, chỉ có thư viện Boost được liên kết động với phần mở rộng .so.

Có thể, ai đó có manh mối về điều gì xảy ra ở đây.

Cảm ơn bạn.

+0

thể trùng lặp của [lỗi mối liên kết trong khi liên kết thúc đẩy log hướng dẫn (tham chiếu không xác định)] (http://stackoverflow.com/questions/23137637/linker-error-while-linking -bài viết-log-hướng dẫn-không xác định) –

Trả lời

13

Bạn cần phải xác định BOOST_LOG_DYN_LINK:

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

Tôi đã thử -DBOOST_LOG_DYN_LINK khi bạn biên dịch, nó hoạt động. – CCC

0

Nếu bạn đang sử dụng cmake thì:

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

và sử dụng:

#define BOOST_LOG_DYN_LINK 1 
Các vấn đề liên quan