2016-03-20 9 views
0

OSX 10.11.3(エル・キャピタン)リンクエラー:: OSXエルキャピタンにログイン

ブーストからfirst exampleを構築しながら、私はリンクエラーを取得しています::チュートリアルをログに記録します。

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

    return 0; 
} 

はここで診断されている:

$ c++ trivial_log_test.cpp 
Undefined symbols for architecture x86_64: 
    "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 trivial_log_test-6968b8.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_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::auto_release::~auto_release() in trivial_log_test-6968b8.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_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::record_pump(boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level>&, boost::log::v2s_mt_posix::record&) in trivial_log_test-6968b8.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_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::record_pump(boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level>&, boost::log::v2s_mt_posix::record&) in trivial_log_test-6968b8.o 
     boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::~record_pump() in trivial_log_test-6968b8.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_mt<boost::log::v2s_mt_posix::trivial::severity_level>, boost::log::v2s_mt_posix::sources::multi_thread_model<boost::log::v2s_mt_posix::aux::light_rw_mutex> >::open_record_unlocked<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, boost::log::v2s_mt_posix::trivial::severity_level const> >(boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, boost::log::v2s_mt_posix::trivial::severity_level const> const&) in trivial_log_test-6968b8.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_mt<boost::log::v2s_mt_posix::trivial::severity_level>, boost::log::v2s_mt_posix::sources::multi_thread_model<boost::log::v2s_mt_posix::aux::light_rw_mutex> >::push_record_unlocked(boost::rv<boost::log::v2s_mt_posix::record>&) in trivial_log_test-6968b8.o 
    "boost::log::v2s_mt_posix::sources::aux::get_severity_level()", referenced from: 
     boost::log::v2s_mt_posix::sources::aux::severity_level<boost::log::v2s_mt_posix::trivial::severity_level>::set_value(boost::log::v2s_mt_posix::trivial::severity_level) in trivial_log_test-6968b8.o 
    "boost::log::v2s_mt_posix::trivial::logger::get()", referenced from: 
     _main in trivial_log_test-6968b8.o 
    "boost::log::v2s_mt_posix::core::get_logging_enabled() const", referenced from: 
     boost::log::v2s_mt_posix::record boost::log::v2s_mt_posix::sources::basic_composite_logger<char, boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level>, boost::log::v2s_mt_posix::sources::multi_thread_model<boost::log::v2s_mt_posix::aux::light_rw_mutex>, boost::log::v2s_mt_posix::sources::features<boost::log::v2s_mt_posix::sources::severity<boost::log::v2s_mt_posix::trivial::severity_level>, void, void, void, void, void, void, void, void, void> >::open_record<boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, boost::log::v2s_mt_posix::trivial::severity_level const> >(boost::parameter::aux::tagged_argument<boost::log::v2s_mt_posix::keywords::tag::severity, boost::log::v2s_mt_posix::trivial::severity_level const> const&) in trivial_log_test-6968b8.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++ -E -x c++ - -v < /dev/null 
Apple LLVM version 7.0.2 (clang-700.1.81) 
Target: x86_64-apple-darwin15.3.0 
Thread model: posix 
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -E -disable-free -disable-llvm-verifier -main-file-name - -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.9 -v -dwarf-column-info -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2 -stdlib=libc++ -fdeprecated-macro -fdebug-compilation-dir /Users/chap/private/cpp/BOOST_TESTING/log_test -ferror-limit 19 -fmessage-length 176 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o - -x c++ - 
clang -cc1 version 7.0.2 based upon LLVM 3.7.0svn default target x86_64-apple-darwin15.3.0 
ignoring nonexistent directory "/usr/include/c++/v1" 
#include "..." search starts here: 
#include <...> search starts here: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 
/usr/local/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
/usr/include 
/System/Library/Frameworks (framework directory) 
/Library/Frameworks (framework directory) 
End of search list. 
# 1 "<stdin>" 
# 1 "<built-in>" 1 
# 1 "<built-in>" 3 
# 332 "<built-in>" 3 
# 1 "<command line>" 1 
# 1 "<built-in>" 2 
# 1 "<stdin>" 2 
自作がインストールされている

かつ最新の。私はブースト再インストール:Boostライブラリを使用してリンクエラーに関する他の同様の質問では

$ brew reinstall boost 
==> Reinstalling boost 
==> Downloading https://homebrew.bintray.com/bottles/boost-1.60.0_1.el_capitan.bottle.tar.gz 
Already downloaded: /Library/Caches/Homebrew/boost-1.60.0_1.el_capitan.bottle.tar.gz 
==> Pouring boost-1.60.0_1.el_capitan.bottle.tar.gz 
    /usr/local/Cellar/boost/1.60.0_1: 11,139 files, 436.0M 

を、一般的な解決策は、いくつかのライブラリをコンパイルするb2実行ファイルを構築するためにbootstrap.shを実行することでした。しかし、これらの人々は自作を使わずにブーストをインストールしました。 HomebrewのBoostのインストールは、スクリプトまたはb2バイナリを含まないという点で、Boost 'getting started' pageで記述されているディレクトリ構造とは異なります。これで私はbrew install boostが世話をしたと私は思います。

誰かが次のステップを提案できますか?

UPDATE 1:bootstrap.shとb2についての修正された文。

自作メーリングリスト上の誰かが提供するソリューションは、以下のフラグを使用して私のプログラムをコンパイルした
+0

「はじめに」ドキュメントをお読みください。 'bootstrap.sh'というスクリプトは、' b2'をビルドしています。 (これは実行可能ファイルであり、スクリプトではありません) –

+0

@Marshall私の忘れてしまったこと - 私は私の声明を訂正しました。私はbootstrap.shスクリプトを意味しました。それもb2もHomebrewのインストールにはありません。 – Chap

+0

リンクエラーが発生する理由は、Boost.Logがヘッダのみのライブラリではないということです。ブーストライブラリをビルドした後、実行可能ファイルにリンクする必要があります。しかし、これはあなたの 'bootstrap.sh'や' b2'の問題には役立ちません。 –

答えて

0

:私はブースト「ボトル」を持っているので

c++ -DBOOST_LOG_DYN_LINK -lboost_log-mt trivial_log_test.cpp 

は、私は、バイナリライブラリのビルド済みバージョンを得ました。 bootstrap.sh/b2の必要はありません。

関連する問題