GCC und Clang können keinen C++-Code kompilieren

GCC und Clang können keinen C++-Code kompilieren

Versuch, den Befehl auszuführengcc code.cpp -o runthis

Es treten jedoch Fehler in diesem Format auf:

/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

Nach einer Online-Überprüfung scheint es sich um ein Linker-Problem zu handeln. Ich verwende Arch Linux. Clang gibt mir den gleichen Fehler wie gcc, ich kann jedoch mit C++ kompilieren. Jede Hilfe ist willkommen.

Antwort1

Sie versuchen, C++ mit einem C-Compiler zu kompilieren. Verwenden Sie g++(oder clang++), einen C++-Compiler, anstelle des C-Compilers gcc(bzw. clang). Dies ist kein Problem von GCC oder clang – Sie verwenden den falschen Compiler für Ihre Sprache!

Die Fehler, die Sie erhalten, sind darauf zurückzuführen, dass ein C-Compiler, selbst wenn er C++ korrekt erkennt, nicht versucht, eine Verknüpfung mit der Standard-C++-Bibliothek herzustellen.

verwandte Informationen