Heim >Backend-Entwicklung >C++ >Warum erhalte ich beim Kompilieren von einfachem C-Code unter macOS die Fehlermeldung „Undefinierte Symbole'?

Warum erhalte ich beim Kompilieren von einfachem C-Code unter macOS die Fehlermeldung „Undefinierte Symbole'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-09 01:43:14566Durchsuche

Why Am I Getting

Fehler beim Kompilieren von einfachem C-Code

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> > &amp; std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &amp;, char const*)", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> > &amp; std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &amp;)", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> >::operator<< (std::basic_ostream<char, std::char_traits<char> > &amp; (*)(std::basic_ostream<char, std::char_traits<char> > &amp;))", 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn