GCC と Clang は C++ コードをコンパイルできません。

GCC と Clang は C++ コードをコンパイルできません。

コマンドを実行してみてください。gcc code.cpp -o runthis

ただし、次の形式のエラーが発生します。

/usr/bin/ld: /tmp/cco6J3Vh.o: warning: relocation against `_ZSt4cout' in read-only section `.text'
/usr/bin/ld: /tmp/cco6J3Vh.o: in function `main':
code.cpp:(.text+0x28): undefined reference to `std::cout'
/usr/bin/ld: code.cpp:(.text+0x30): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: code.cpp:(.text+0x3e): undefined reference to `std::cin'
/usr/bin/ld: code.cpp:(.text+0x46): undefined reference to `std::istream::operator>>(int&)'
/usr/bin/ld: code.cpp:(.text+0x9e): undefined reference to `std::cout'
/usr/bin/ld: code.cpp:(.text+0xa6): undefined reference to `std::ostream::operator<<(int)'
/usr/bin/ld: code.cpp:(.text+0xbb): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: code.cpp:(.text+0xc9): undefined reference to `std::cout'
/usr/bin/ld: code.cpp:(.text+0xd1): undefined reference to `std::ostream::operator<<(int)'
/usr/bin/ld: code.cpp:(.text+0xe6): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/cco6J3Vh.o: in function `__static_initialization_and_destruction_0(int, int)':
code.cpp:(.text+0x12d): undefined reference to `std::ios_base::Init::Init()'
/usr/bin/ld: code.cpp:(.text+0x148): undefined reference to `std::ios_base::Init::~Init()'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status

オンラインで確認してみるとリンカー問題のようです。私はアーチLinuxを使用しています。 Clangではgccと同じエラーが発生しますが、C ++を使用してコンパイルできます。助けてくれてありがとう。

ベストアンサー1

Cコンパイラを使用してC ++をコンパイルしようとしています。 Cコンパイラg++(またはそれぞれ)の代わりにCコンパイラ(またはそれぞれ)clang++、つまりC ++コンパイラを使用してください。これはGCCやclangの問題ではありません。あなたの言語に間違ったコンパイラを使用しているからです!gccclang

表示されるエラーは、CコンパイラがC ++を正しく認識しても標準C ++ライブラリとの接続を試みないために発生します。

おすすめ記事