2013-02-03 110 views
0

我想在C++中使用線程,使用boost的線程庫。克朗給我一個錯誤,我不知道如何解釋它。我試圖編譯的文件大約是最小的,因爲它可以得到:包括boost/thread.hpp時編譯錯誤

#include <iostream> 
#include <boost/thread.hpp> 

using namespace std; 

int main() { 
    return 0; 
} 

下面是全文:

$ clang++ -std=c++11 -o 4.4 4.4.cpp -v 
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) 
Target: x86_64-apple-darwin12.2.1 
Thread model: posix 
"/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.8.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name 4.4.cpp -pic-level 1 -mdisable-fp-elim -relaxed-aliasing -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 134.9 -v -resource-dir /usr/bin/../lib/clang/4.1 -fmodule-cache-path /var/folders/mt/k4dhhm7d7_7_q6drl3zkjj4r0000gn/T/clang-module-cache -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/thinkpad20/Documents/workspace/cpp/homework4 -ferror-limit 19 -fmessage-length 100 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime-has-arc -fobjc-runtime-has-weak -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/mt/k4dhhm7d7_7_q6drl3zkjj4r0000gn/T/4-49j8fE.o -x c++ 4.4.cpp 
clang -cc1 version 4.1 based upon LLVM 3.1svn default target x86_64-apple-darwin12.2.1 
ignoring nonexistent directory "/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64" 
ignoring nonexistent directory "/usr/include/c++/4.0.0" 
ignoring nonexistent directory "/usr/include/c++/4.0.0/i686-apple-darwin8/" 
ignoring nonexistent directory "/usr/include/c++/4.0.0/backward" 
ignoring nonexistent directory "/usr/local/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/include/c++/4.2.1 
/usr/include/c++/4.2.1/backward 
/usr/bin/../lib/clang/4.1/include 
/usr/include 
/System/Library/Frameworks (framework directory) 
/Library/Frameworks (framework directory) 
End of search list. 
"/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.8.0 -o 4.4 /var/folders/mt/k4dhhm7d7_7_q6drl3zkjj4r0000gn/T/4-49j8fE.o -lstdc++ -lSystem /usr/bin/../lib/clang/4.1/lib/darwin/libclang_rt.osx.a 
Undefined symbols for architecture x86_64: 
    "boost::system::system_category()", referenced from: 
     ___cxx_global_var_init3 in 4-49j8fE.o 
    "boost::system::generic_category()", referenced from: 
     ___cxx_global_var_init1 in 4-49j8fE.o 
     ___cxx_global_var_init2 in 4-49j8fE.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

任何幫助表示讚賞! :)

+1

你鏈接正確嗎? – Rapptz

+0

@Rapptz不,他沒有 - clang調用的'ld'命令在上面的日誌中。 'boost_system'(也可能'boost_thread')必須被鏈接才能工作。 – us2012

+0

'clang ++ -std = C++ 11 -o 4.4 4.4.cpp -v'不夠:) – billz

回答

0

你需要告訴鐺哪些庫鏈接。在你的情況,這是boost_system(這是錯誤消息告訴你)和(只要你真正得到各地在程序中使用一些線程的東西)boost_thread一樣,所以編譯如下:

clang++ -std=c++11 -o myapp myfile.cpp -lboost_system -lboost_thread