11

だから私はclangコンパイラを動作させようとしています..プログラムの私の自然な最初の選択は次の非常に複雑なコードでした:

#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

4

2 に答える 2

21

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

于 2012-04-14T19:21:36.843 に答える
5

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

-lstdc++を追加する必要があります。

-vオプションでこれを理解しました。そして、違いは次のとおりです。

クラン++

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

ガチャガチャ

-lgcc --必要に応じて -lgcc_s --必要に応じて不要 -lc -lgcc --必要に応じて -lgcc_s --必要に応じて不要

于 2014-01-26T02:53:10.543 に答える