Heim >Backend-Entwicklung >C++ >Warum erhalte ich beim Kompilieren von einfachem C-Code unter macOS die Fehlermeldung „Undefinierte Symbole'?
Frage:
Ich erhalte eine Fehlermeldung beim Kompilieren eines einfachen C-Programms unter macOS Löwe.
Code:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { for (int i = 0; i < 10; i++) { cout << "hi"; cout << endl; } return 0; }
Zusammenstellung Befehl:
cc main.cpp
Fehler:
Undefined symbols for architecture x86_64: "std::cout", referenced from: _main in ccBdbc76.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 ccBdbc76.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 ccBdbc76.o "std::basic_ostream<char, std::char_traits<char> >::operator<< (std::basic_ostream<char, std::char_traits<char> > & (*)(std::basic_ostream<char, std::char_traits<char> > &))", referenced from: _main in ccBdbc76.o "std::ios_base::Init::Init()", referenced from: __static_initialization_and_destruction_0(int, int)in ccBdbc76.o "std::ios_base::Init::~Init()", referenced from: ___tcf_0 in ccBdbc76.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status
Antwort:
Diese Art von Fehler ist normalerweise der Fall Tritt auf, wenn der C-Code mit dem C-Frontend kompiliert wird. Während der C-Compiler die Datei als C versteht und kompiliert, schlägt das Verknüpfen aufgrund fehlender Verweise auf die C-Bibliotheken fehl. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie stattdessen den C-Compiler verwenden. Ersetzen Sie cc beim Kompilieren des Codes durch g oder clang:
g++ main.cpp clang++ main.cpp
Die Verwendung des richtigen C-Compilers verknüpft den Code mit den erforderlichen Bibliotheken und behebt die undefinierten Symbolfehler.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Kompilieren von einfachem C-Code unter macOS die Fehlermeldung „Undefinierte Symbole'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!