C++ Boost记录器链接问题

C++ Boost记录器链接问题,c++,logging,boost,c++11,C++,Logging,Boost,C++11,我正在写一个使用Boost库的程序。我在链接和使用程序选项方面没有问题,但我似乎无法使boost日志正常工作。 谁能告诉我我错过了什么 果酱 using clang : : : <compileflags>-Isrc/main/headers <compileflags>-std=c++11 <compileflags>-stdlib=libc++ <linkflags>-std=c++11 <linkflags>-stdlib=lib

我正在写一个使用Boost库的程序。我在链接和使用程序选项方面没有问题,但我似乎无法使boost日志正常工作。 谁能告诉我我错过了什么

果酱

using clang : : : <compileflags>-Isrc/main/headers <compileflags>-std=c++11 <compileflags>-stdlib=libc++ <linkflags>-std=c++11 <linkflags>-stdlib=libc++ ;
lib boost_program_options boost_log ;
exe foghorn : [ glob src/main/cpp/*.cpp ] boost_program_options boost_log ;
使用clang::-Isrc/main/headers-std=c++11-stdlib=libc++-std=c++11-stdlib=libc++;
lib boost_程序选项boost_日志;
exe foghorn:[glob src/main/cpp/*.cpp]boost\u program\u options boost\u log;
这就是我得到的错误:

  "boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:
      boost::log::v2s_mt_posix::record::reset() in main.o
  "boost::log::v2s_mt_posix::attribute_set::insert(boost::log::v2s_mt_posix::attribute_name, boost::log::v2s_mt_posix::attribute const&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&) in main.o
      boost::log::v2s_mt_posix::aux::attribute_set_reference_proxy::operator=(boost::log::v2s_mt_posix::attribute const&) const in main.o
  "boost::log::v2s_mt_posix::attribute_set::attribute_set(boost::log::v2s_mt_posix::attribute_set const&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger(boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model> const&) in main.o
  "boost::log::v2s_mt_posix::attribute_set::attribute_set()", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger() in main.o
  "boost::log::v2s_mt_posix::attribute_set::~attribute_set()", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::~basic_logger() in main.o
  "boost::log::v2s_mt_posix::attribute_name::get_id_from_string(char const*)", referenced from:
      boost::log::v2s_mt_posix::attribute_name::attribute_name(char const*) in main.o
  "void boost::log::v2s_mt_posix::init_from_stream<char>(std::__1::basic_istream<char, std::__1::char_traits<char> >&)", referenced from:
      __ZL13gvLoggingInitPKc in main.o
  "boost::log::v2s_mt_posix::aux::this_thread::get_id()", referenced from:
      boost::log::v2s_mt_posix::attributes::current_thread_id::impl::dispatch(boost::log::v2s_mt_posix::type_dispatcher&) in main.o
      boost::log::v2s_mt_posix::attributes::current_thread_id::impl::detach_from_thread() in main.o
  "boost::log::v2s_mt_posix::aux::this_process::get_id()", referenced from:
      boost::log::v2s_mt_posix::attributes::current_process_id::current_process_id() in main.o
  "boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*)", referenced from:
      boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel> >::auto_release::~auto_release() in main.o
  "boost::log::v2s_mt_posix::aux::stream_provider<char>::allocate_compound(boost::log::v2s_mt_posix::record&)", referenced from:
      boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel> >::record_pump(boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>&, boost::log::v2s_mt_posix::record&) in main.o
  "boost::log::v2s_mt_posix::aux::get_process_name()", referenced from:
      boost::log::v2s_mt_posix::attributes::current_process_name::current_process_name() in main.o
  "boost::log::v2s_mt_posix::aux::once_block_sentry::commit()", referenced from:
      boost::log::v2s_mt_posix::aux::lazy_singleton<boost::log::v2s_mt_posix::sources::aux::logger_singleton<SLogger>, boost::shared_ptr<boost::log::v2s_mt_posix::sources::aux::logger_holder<boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel> > > >::get() in main.o
  "boost::log::v2s_mt_posix::aux::once_block_sentry::rollback()", referenced from:
      boost::log::v2s_mt_posix::aux::once_block_sentry::~once_block_sentry() in main.o
  "boost::log::v2s_mt_posix::aux::default_attribute_names::severity()", referenced from:
      boost::log::v2s_mt_posix::sources::basic_severity_logger<boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>, ESeverityLevel>::basic_severity_logger() in main.o
      boost::log::v2s_mt_posix::sources::basic_severity_logger<boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>, ESeverityLevel>::basic_severity_logger(boost::log::v2s_mt_posix::sources::basic_severity_logger<boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>, ESeverityLevel> const&) in main.o
  "boost::log::v2s_mt_posix::aux::unhandled_exception_count()", referenced from:
      boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel> >::~record_pump() in main.o
      boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel> >::record_pump(boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>&, boost::log::v2s_mt_posix::record&) in main.o
  "boost::log::v2s_mt_posix::aux::attach_attribute_name_info(boost::exception&, boost::log::v2s_mt_posix::attribute_name const&)", referenced from:
      boost::log::v2s_mt_posix::value_extractor<ESeverityLevel, boost::log::v2s_mt_posix::fallback_to_none, tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in main.o
  "boost::log::v2s_mt_posix::core::set_filter(boost::log::v2s_mt_posix::filter const&)", referenced from:
      __ZL13gvLoggingInitPKc in main.o
  "boost::log::v2s_mt_posix::core::open_record(boost::log::v2s_mt_posix::attribute_set const&)", referenced from:
      boost::log::v2s_mt_posix::record boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::open_record_unlocked<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, ESeverityLevel const> >(boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, ESeverityLevel const> const&) in main.o
  "boost::log::v2s_mt_posix::core::push_record_move(boost::log::v2s_mt_posix::record&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::push_record_unlocked(boost::log::v2s_mt_posix::record&&) in main.o
  "boost::log::v2s_mt_posix::core::add_global_attribute(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&)", referenced from:
      __ZL13gvLoggingInitPKc in main.o
  "boost::log::v2s_mt_posix::core::get()", referenced from:
      __ZL13gvLoggingInitPKc in main.o
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger() in main.o
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger(boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model> const&) in main.o
  "boost::log::v2s_mt_posix::sources::aux::global_storage::get_or_init(std::type_info const&, boost::shared_ptr<boost::log::v2s_mt_posix::sources::aux::logger_holder_base> (*)())", referenced from:
      boost::log::v2s_mt_posix::sources::aux::logger_singleton<SLogger>::init_instance() in main.o
  "boost::log::v2s_mt_posix::sources::aux::get_severity_level()", referenced from:
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::set_value(ESeverityLevel) in main.o
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::impl::dispatch(boost::log::v2s_mt_posix::type_dispatcher&) in main.o
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::impl::detach_from_thread() in main.o
  "boost::log::v2s_mt_posix::sources::aux::throw_odr_violation(std::type_info const&, std::type_info const&, boost::log::v2s_mt_posix::sources::aux::logger_holder_base const&)", referenced from:
      boost::log::v2s_mt_posix::sources::aux::logger_singleton<SLogger>::init_instance() in main.o
  "boost::log::v2s_mt_posix::attribute::impl::operator delete(void*, unsigned long)", referenced from:
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::severity_level() in main.o
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::impl::~impl() in main.o
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::impl::detach_from_thread() in main.o
      boost::log::v2s_mt_posix::attributes::attribute_value_impl<ESeverityLevel>::~attribute_value_impl() in main.o
      boost::log::v2s_mt_posix::attribute_value::impl::~impl() in main.o
      boost::log::v2s_mt_posix::attribute::impl::~impl() in main.o
      boost::log::v2s_mt_posix::attributes::current_thread_id::current_thread_id() in main.o
      ...
  "boost::log::v2s_mt_posix::attribute::impl::operator new(unsigned long)", referenced from:
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::severity_level() in main.o
      boost::log::v2s_mt_posix::sources::aux::severity_level<ESeverityLevel>::impl::detach_from_thread() in main.o
      boost::log::v2s_mt_posix::attributes::current_thread_id::current_thread_id() in main.o
      boost::log::v2s_mt_posix::attributes::current_thread_id::impl::detach_from_thread() in main.o
      boost::log::v2s_mt_posix::attributes::constant<boost::log::v2s_mt_posix::aux::id<boost::log::v2s_mt_posix::aux::process> >::constant(boost::log::v2s_mt_posix::aux::id<boost::log::v2s_mt_posix::aux::process>&&) in main.o
      boost::log::v2s_mt_posix::attributes::constant<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::constant(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in main.o
      boost::log::v2s_mt_posix::attributes::basic_clock<boost::log::v2s_mt_posix::attributes::local_time_traits>::basic_clock() in main.o
      ...
  "boost::system::system_category()", referenced from:
      ___cxx_global_var_init2 in main.o
  "boost::system::generic_category()", referenced from:
      ___cxx_global_var_init in main.o
      ___cxx_global_var_init1 in main.o
  "boost::log::v2s_mt_posix::attribute_value_set::end() const", referenced from:
      boost::log::v2s_mt_posix::value_extractor<ESeverityLevel, boost::log::v2s_mt_posix::fallback_to_none, tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in main.o
  "boost::log::v2s_mt_posix::attribute_value_set::find(boost::log::v2s_mt_posix::attribute_name) const", referenced from:
      boost::log::v2s_mt_posix::value_extractor<ESeverityLevel, boost::log::v2s_mt_posix::fallback_to_none, tag::severity>::operator()(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute_value_set const&) const in main.o
  "boost::log::v2s_mt_posix::aux::once_block_sentry::enter_once_block() const", referenced from:
      boost::log::v2s_mt_posix::aux::once_block_sentry::executed() const in main.o
  "boost::log::v2s_mt_posix::core::get_logging_enabled() const", referenced from:
      __ZN5boost3log12v2s_mt_posix7sources22basic_composite_loggerIcNS2_15severity_loggerI14ESeverityLevelEENS2_19single_thread_modelENS2_8featuresIJNS2_8severityIS5_EEEEEE11open_recordINS_9parameter3aux15tagged_argumentINS1_8keywords3tag8severityEKS5_EEEENS1_6recordERKT_ in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

    "clang++"   -o "bin/clang-darwin-4.2.1/debug/foghorn" "bin/clang-darwin-4.2.1/debug/src/main/cpp/complement.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/degenerate.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/fastq.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/fastq_reader.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/interleave.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/interval_reader.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/interval_reader_test_tool.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/main.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/oligo_designer.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/reference_reader.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/reference_reader_test_tool.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/sequence_utils.o" "bin/clang-darwin-4.2.1/debug/src/main/cpp/tool.o"  -lboost_log -lboost_program_options  -g -std=c++11 -stdlib=libc++

...failed clang-darwin.link bin/clang-darwin-4.2.1/debug/foghorn...
...failed updating 1 target...
...updated 13 targets...
“boost::log::v2s\u mt\u posix::record\u view::public\u data::destroy(boost::log::v2s\u mt\u posix::record\u view::public\u data const*)”,引用自:
main.o中的boost::log::v2s\u mt\u posix::record::reset()
“boost::log::v2s\u mt\u posix::attribute\u set::insert(boost::log::v2s\u mt\u posix::attribute\u name,boost::log::v2s\u mt\u posix::attribute const&)”,引用自:
boost::log::v2s_mt_posix::sources::basic_logger::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&,boost::log::v2s_mt_posix::attribute const&)
boost::log::v2s\u mt\u posix::aux::attribute\u set\u reference\u proxy::operator=(boost::log::v2s\u mt\u posix::attribute const&)main.o中的const
“boost::log::v2s\u mt\u posix::attribute\u set::attribute\u set(boost::log::v2s\u mt\u posix::attribute\u set const&)”,引用自:
main.o中的boost::log::v2s\u mt\u posix::sources::basic\u logger::basic\u logger(boost::log::v2s\u mt\u posix::sources::basic\u logger const&)
“boost::log::v2s_mt_posix::attribute_set::attribute_set()”,引用自:
boost::log::v2s_mt_posix::sources::basic_logger::basic_logger()位于main.o中
“boost::log::v2s_mt_posix::attribute_set::~ attribute_set()”,引用自:
boost::log::v2s_mt_posix::sources::basic_logger::~basic_logger()位于main.o中
“boost::log::v2s_mt_posix::attribute_name::get_id_from_string(char const*)”,引用自:
main.o中的boost::log::v2s\u mt\u posix::attribute\u name::attribute\u name(char const*)
“void boost::log::v2s_mt_posix::init_from_stream(std::_1::basic_istream&)”,引用自:
__main.o中的ZL13gvLoggingInitPKc
“boost::log::v2s_mt_posix::aux::this_thread::get_id()”,引用自:
main.o中的boost::log::v2s_mt_posix::attributes::current_thread_id::impl::dispatch(boost::log::v2s_mt_posix::type_dispatcher&)
boost::log::v2s_mt_posix::attributes::current_thread_id::impl::detach_from_thread()在main.o中
“boost::log::v2s\u mt\u posix::aux::this\u process::get\u id()”,引用自:
boost::log::v2s\u mt\u posix::attributes::当前进程\u id::main.o中的当前进程\u id()
“boost::log::v2s\u mt\u posix::aux::stream\u provider::release\u component(boost::log::v2s\u mt\u posix::aux::stream\u provider::stream\u component*)”引用自:
boost::log::v2s_mt_posix::aux::record_pump::auto_release::~auto_release()在main.o中
“boost::log::v2s\u mt\u posix::aux::stream\u provider::allocate\u component(boost::log::v2s\u mt\u posix::record&)”,引用自:
主.o中的boost::log::v2s\u mt\u posix::aux::record\u pump::record\u pump(boost::log::v2s\u mt\u posix::sources::severity\u logger&,boost::log::v2s\u mt\u posix::record&)
“boost::log::v2s_mt_posix::aux::get_process_name()”,引用自:
boost::log::v2s\u mt\u posix::attributes::current\u process\u name::main.o中的current\u process\u name()
“boost::log::v2s\u mt\u posix::aux::once\u block\u sentry::commit()”,引用自:
main.o中的boost::log::v2s\u mt\u posix::aux::lazy\u singleton::get()
“boost::log::v2s\u mt\u posix::aux::once\u block\u sentry::rollback()”,引用自:
boost::log::v2s_mt_posix::aux::once_block_sentry::~once_block_sentry()在main.o中
“boost::log::v2s\u mt\u posix::aux::default\u attribute\u names::severity()”,引用自:
boost::log::v2s_mt_posix::sources::basic_severity_logger::basic_severity_logger::main.o中的basic_severity_logger()
main.o中的boost::log::v2s_mt_posix::sources::basic_severity_logger::basic_severity_logger::basic_severity_logger(boost::log::v2s_mt_posix::sources::basic_severity_logger const&)
“boost::log::v2s\u mt\u posix::aux::unhandled\u exception\u count()”,引用自:
boost::log::v2s_mt_posix::aux::record_pump::~record_pump()在main.o中
主.o中的boost::log::v2s\u mt\u posix::aux::record\u pump::record\u pump(boost::log::v2s\u mt\u posix::sources::severity\u logger&,boost::log::v2s\u mt\u posix::record&)
“boost::log::v2s\u mt\u posix::aux::attach\u attribute\u name\u info(boost::exception&,boost::log::v2s\u mt\u posix::attribute\u name const&)”,引用自:
boost::log::v2s_mt_posix::value_extractor::operator()(boost::log::v2s_mt_posix::attribute_name const&,boost::log::v2s_mt_posix::attribute_value_set const&)main.o中的const
“boost::log::v2s_mt_posix::core::set_filter(boost::log::v2s_mt_posix::filter const&)”,引用自:
__main.o中的ZL13gvLoggingInitPKc
“boost::log::v2s\u mt\u posix::core::open\u record(boost::log::v2s\u mt\u posix::attribute\u set const&)”,引用自:
boost::log::v2s_mt_posix::record boost::log::v2s_mt_posix::sources::basic_logger::open_record_unlocked(boost::parameter::aux::taged_argument const&)在main.o中
“boost::log::v2s\u mt\u posix::core::push\u record\u move(boost::log::v2s\u mt\u posix::record&)”,引用自:
boost::log::v2s_mt_posix::sources::basic_logger::push_record_unlocked(boost::log::v2s_mt_posix::record&&)在main.o中
“boost::log::v2s_mt_posix::core::add_global_属性(boost::log::v2s_mt_posix::attribute_name const&,boost::log::v2s_mt_posix::attribute const&)”,引用自:
__main.o中的ZL13gvLoggingInitPKc
“boost::log::v2s\u mt\u posix::core::get()”,引用自:
__main.o中的ZL13gvLoggingInitPKc
boost::log::v2s_mt_posix::sources::basic_logger::basic_logger()位于main.o中
main.o中的boost::log::v2s\u mt\u posix::sources::basic\u logger::basic\u logger(boost::log::v2s\u mt\u posix::sources::basic\u logger const&)
“boost::log::v2s_mt_posix::sources::aux::global_storage::get_or_init(std::type_info const&,boost::shared_ptr(*)()”,引用自:
main.o中的boost::log::v2s_mt_posix::sources::aux::logger_singleton::init_instance()
“boost::log::v2s\u mt_
gcc .... -L/opt/boost_1.55/lib -lboost_log
gcc .... /opt/boost_1.55/lib/libboost_log.a
add_definitions(-DBOOST_LOG_DYN_LINK)
void boost::log::v2s_mt_posix::init_from_stream<char>(std::basic_istream<char, std::char_traits<char> >&)
libboost_log_setup.a