2012-04-14 5 views
9

が見つかりません...プログラムの私の自然の最初の選択肢は、以下の非常に複雑なコードだった:私は、コマンドラインで打ち鳴らすのiostreamを - シンボルだから私は仕事に<code>clang</code>コンパイラを取得しようとしている

#include <iostream> 
using std::cout; using std::endl; 
/* hello world.cpp */ 
int main() 
{ 
    cout << "Hello, world!" << endl; 
    return 0; 
} 

clang helloworld.cppとなり、次のようなエラーが発生します。

Undefined symbols for architecture x86_64: 
    "std::ios_base::Init::~Init()", referenced from: 
     ___cxx_global_var_init in cc-4iziZq.o 
    "std::ios_base::Init::Init()", referenced from: 
     ___cxx_global_var_init in cc-4iziZq.o 
    "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from: 
     _main in cc-4iziZq.o 
    "std::cout", referenced from: 
     _main in cc-4iziZq.o 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _main in cc-4iziZq.o 
    "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from: 
     _main in cc-4iziZq.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

何が問題なのですか。 ありがとう! -kstruct

答えて

18

clangはCコンパイラです。 clang++を使用するか、-x c++フラグを使用する必要があります。

+0

は、明らかに私は完全に目を覚ましていないです

-lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc

打ち鳴らします。 -_-ありがとう! – adelbertc

3

clang is a C compiler. You need to use clang++ or use the -x c++ flag.

はまだ-lstdC++を追加する必要があります。

私は-vオプションでこれを理解しました。そして、私はdiffrenceが見つかりました

打ち鳴らす++

-lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed

関連する問題