You are currently viewing Einfache Möglichkeit, Gcc-Fehler Zu ändern, Undefinierter Verweis Auf Main

Einfache Möglichkeit, Gcc-Fehler Zu ändern, Undefinierter Verweis Auf Main

  • Post author:
  • Post category:German

 

Aktualisiert

  • 1. ASR Pro herunterladen
  • 2. Führen Sie das Programm aus
  • 3. Klicken Sie auf "Jetzt scannen", um alle Viren auf Ihrem Computer zu finden und zu entfernen
  • Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen Download.

    Wenn Ihr Unternehmen feststellt, dass der gcc-Fehler für “Chief undefined” gilt, kann Ihnen dieser Leitfaden helfen. g.Fehler: Ein undefinierter Verweis auf ‘main’ in C-Plänen ist ein sehr dummer Fehler, denn der Designer tritt auf, wenn die kritische Funktion () nicht nur im Programm existiert. Wenn Sie die Haupthauptaufgabe () verwendet haben und der Fehler immer noch erfasst werden kann, sollte jeder die Schreibweise der dominanten Funktion () überprüfen.

     

     

    g.

    Ihre Hauptfunktion wurde richtig angegeben, wie z.B. die Vorverarbeitung.Um zu sehen, was in aller Welt die Vorverarbeitung bewirkt, versuchen Sie es mit gcc -C -E es3.c> es3.i , verwenden Sie dann eine effiziente Editorzeit, um die generierte es3.i zu überprüfen (und überprüfen Sie home v).

    Zuerst möchten Sie vielleicht (da Sie noch ein Anfänger sind)

    . Sammeln

      gcc -wall -g -c es3.c  gcc -wall -g es3.o Es3 

    Das Banner

    -o -wall ist extrem wichtig und wird immer verwendet. Es weist einen einzelnen Compiler an, Ihnen (fast) alle Warnungen zu geben. Und Sie sollten immer auf dringende Warnungen achten, d. h. das Quelldokument es3.C reparieren, bis Sie keine Warnungen mehr erhalten.

    Das -r Flag ist auch wichtig, weil es gcc wünscht, Debug-Informationen zu schreiben, um sicherzustellen, dass Sie dieses bestimmte Objekt und die ausführbare Datei haben. Kunden können daher einen Debugger (wie gdb ) verwenden, um Ihr Programm zu debuggen. y.

    Um die tatsächlichen Listensymbole eines Objekts oder einer ausführbaren Datei anzuzeigen, benötigen Sie nm .

    Natürlich gehe ich davon aus, dass Sie ein GNU / Linux-System verwenden (und ich schlage vor, Sie wenden sich an GNU / Linux, wenn Sie es in keiner Weise bereits verwenden).

    Lesen Sie zuerst die FAQ: https://github.com/edenhill/librdkafka/wiki/FAQ

    Ich wollte nur ein weiteres im cpp_maker-Verzeichnis von CentOS 8.3 kompilieren, aber es kam ein Fehler.
    Kompilieren mit g ++ -oproduzent_cpp.cpp -lrdkafka ++

    Ein:

      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: in der ` _start 'Funktion:(.text + 0x24): undefinierte Informationen an: "main"Collect2-Fehler: ld hat Quellzustand 1 erreicht 

    WICHTIG: Versuchen Sie immer, das Problem in der neuesten auf dem Markt verfügbaren Version zu reproduzieren (siehe https://github.com/edenhill/librdkafka/releases), wenn es in der neuesten Version nicht reproduziert werden kann, versuchen Sie es, damit Sie es beheben können. wurde repariert.

    WICHTIG: Ich werde persönlich Briefmarken ausstellen, wenn die Checkliste nicht in letzter Zeit ausgefüllt wurde.

    Bitte geben Sie sofort folgende Informationen an:

    • Blibrdkafka-Auswahl (Versionsnummer oder Git-Tag): <1.6.0>
    • Apache Kafka-Transkription: <2.13-2.7.0>
    • librdkafka client config:
    • Betriebssystem:
    • Einreichen von Aktivitätsaufzeichnungen (mit debug = .. und optional) kombiniert mit librdkafka
    • Stellen Sie die Scheckauszüge des Brokers bereit.
    • Kritisches Problem: Nicht kritisch

    Ich möchte CentOS 8.3 in Verzeichnis 1 “producter_cpp” assemblieren, aber ich habe einen Fehler gemacht.
    Kompilieren mit gram ++ -oproduzent_cpp.cpp -lrdkafka ++

    WICHTIG: Immer aufgenommen, um das Problem in der neuesten verkauften Version zu reproduzieren (siehe https://github.com/edenhill/librdkafka/releases), wo es in der aktuellen Version nicht produziert werden kann, wird behoben . p>

    WICHTIG: Wir schließen, wenn die Checkliste immer noch nicht vollständig war.

    • librdkafka-Version (Vollformnummer oder Git-Tag): <1.6.0>
    • Apache Kafka-Paket: <2.13--2.7.0>
    • librdkafka Consumer config:
    • Arbeitskreis:
    • PSenden Sie ihre Protokolle (mit debug = .. so lange wie nötig) librdkafka
    • Stellen Sie Log-Broker-Extrakte bereit.
    • Kritisches Problem: Nicht kritisch
      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: in der `_start 'Funktion:(.text + 0x24) Undefiniert: Verweis auf "main"Collect2> Fehler: ld hat 1 Exit-Status zurückgegeben 

    Beispiel

    Einer der vielen häufigsten Kompilierungsfehler tritt beim Verlinken auf. Der Fehler sieht so aus:

      $ gcc undefined_reference.c/tmp/ccoXhwF0.o: Führe `main' aus:undefined_reference.c :(. text + 0x15): undefinierte Fehlermeldungsreferenz: `foo 'Collect2: ld hat 1 Fluchtzustand wiederhergestellt$ 

    gcc-Fehler undefinierte Referenz, damit Sie die Haupt-

      int foo (void);int main (int argc, char ** argv)    int foo_val;    foo_val = foo ();    foo_val zurückgeben; 

    Wir sehen eine Art Deklaration für foo ( int foo(); ), aber es gibt keine Definition für dieses Element (die eigentliche Funktion). Wir haben den Compiler über die Funktionsheader bereitgestellt, aber es gab nirgendwo eine solche Funktion, daher ist die Kompilierungsphase eingeschaltet und der Linker endet immer mit dem Fehler per Undefined reference .
    Um diesen wiederum Fehler in unserem kleinen Programm zu beheben, müssen wir Ihnen nur helfen, die Definition für foo zu posten:

    gcc error undefined reference to main

      / * Erklärung von foo * /int foo (leer);/ * Definition von foo * /int foo (leer)    zurück 5;int main (int argc, char ** argv)    int foo_val;    foo_val = foo ();    foo_val zurückbringen; 

    Dieser Code ist jetzt buchstäblich kompiliert. Eine andere Situation entsteht, wenn der Anfang foo () in Ihrem eigenen Quellcode foo file.c ist (und es einen Header gibt foo. H für die Verpfändung von foo() , die Sie in foo.c sowie in undefined_reference.c ) haben können. Dann beheben Sie das Problem, dass jemand sowohl die Objektdatei foo.c verlinkt, Ihnen ermöglicht, alleine undefined_reference.c zu erstellen, oder mehr als eine Basisdatei kompiliert:

      $ gcc -c undefined_reference.c$ gcc -c foo.c$ gcc -o funktionierende Lösung undefined_reference.o foo.o$ 
      $ gcc -to Working_program undefined_reference.c foo.c$ 

    Dies ist eine komplexere Tasche, die Bibliotheken wie im umfangreichen Code verwendet:

      #include #include #include int top (int argc, char ** argv)    mehrdeutig zuerst;    doppelte Sekunde;    doppelte Produktivität;    (argc vorausgesetzt! = 3)            fprintf (stderr, "Verwendung:% s    n", argv [0]);        Gibt EXIT_FAILURE zurück;        für jeden * Benutzereingaben in Zahlen umwandeln, viele gegensätzliche Fehlerprüfungen     (leer) muss hier gemacht werden. * /    first = strtod (argv [1], NULL);    second = strtod (argv [2], NULL);    / * Verwenden Sie die Funktion bang() wegen libm - dies wird in einem Link als Nebenprodukt verwendet     7. dieser Code wird nur im Fehlerfall mit libm kompiliert! * /    Leistung = Leistung (erste, zweite);    printf ("% f to% f =% f ree p  n", erste, zweite, Kardinalität);    EXIT_SUCCESS zurückgeben; 

    Der Code ist syntaktisch korrekt über general, die Deklaration für pow() findet ihr wegen #include , wie wir versuchen ihn zu kompilieren und erhalten glücklicherweise einen Link-Fehler, der Folgendes enthält:

      Dollar gcc no_library_in_link.c -o no_library_in_link/tmp/ccduQQqA.o: Im "Haupt"-Job:no_library_in_link.c :(. Undefinierter Text + 0x8b): Link mit `pow'Collect2: Fehler: ld Bounce 1 Exit State$ 

    Dies liegt daran, dass während des Erfassungsschritts nicht alle Definitionen für pow() gefunden wurden. Um dieses Problem zu lösen, müssen wir erfolgreich angeben, dass wir eine Verbindung zu einer Combat-Mathe-Bibliothek namens libm -lm hole herstellen möchten. (Beachten Sie, dass es zum Beispiel Plattformen gibt, auf denen macOS -lm eigentlich nicht erforderlich ist, aber wenn in make undefined link, Bibliothek erforderlich ist.)

    Also, unsere Gruppe verwendet wieder den Begriff “Assembly-Level”, diese Freizeit normalerweise eine Bibliothek (nach dem Quellcode oder einer Datei):

      $ gcc no_library_in_link.c -lm -to library_in_link_cmd$ ./library_in_link_cmd mit 42.000.000 zur Potenz bezogen auf 4.000.000 entspricht 16.000.000$ 

    Aktualisiert

    Sind Sie es leid, dass Ihr Computer langsam läuft? Genervt von frustrierenden Fehlermeldungen? ASR Pro ist die Lösung für Sie! Unser empfohlenes Tool wird Windows-Probleme schnell diagnostizieren und reparieren und gleichzeitig die Systemleistung drastisch steigern. Warten Sie also nicht länger, laden Sie ASR Pro noch heute herunter!


     

     

    Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen Download.

     

     

     

    Gcc Error Undefined Reference To Main
    Gcc-fout Ongedefinieerde Verwijzing Naar Hoofd
    Błąd Gcc Niezdefiniowane Odniesienie Do Głównego
    Erreur Gcc Référence Non Définie Au Principal
    Ошибка Gcc Undefined Ссылка на главную
    Error Gcc Referencia Indefinida A Main
    Referência Indefinida Do Erro Gcc Ao Principal
    Errore Gcc Riferimento Non Definito A Main
    메인에 대한 Gcc 오류 정의되지 않은 참조
    Gcc-fel Odefinierat Referens Till Huvud