You are currently viewing Enkelt Sätt Att Börja Med Problemen Gcc-fel, Odefinierad Referens Till Huvud

Enkelt Sätt Att Börja Med Problemen Gcc-fel, Odefinierad Referens Till Huvud

 

Uppdaterad

  • 1. Ladda ner ASR Pro
  • 2. Kör programmet
  • 3. Klicka på "Skanna nu" för att hitta och ta bort eventuella virus på din dator
  • Få fart på din dator idag med denna enkla nedladdning.

    Om folk upptäcker att gcc-felet är över huvud odefinierat, kan den här guiden hjälpa dig. g.Fel: En odefinierad referens till ‘main’ i C-program är ett väldigt dumt fel, eftersom den programmeraren uppstår när den kritiska funktionen () kanske inte finns i programmet. Om du tidigare ägde huvuduppgiften () och felet fortfarande existerar, bör alla kontrollera stavningen av min huvudfunktion ().

     

     

    g.

    Din huvudsakliga förmåga kan ha specificerats, såsom förbearbetning.För att se vad förbearbetning gör, prova gcc -C -E es3.c> es3.i , använd sedan en effektiv författare för att inspektera den genererade es3.i (och granska artikeln main v).

    Först kanske du kanske vill (eftersom du fortfarande är nybörjare)

    . Samla

      gcc -vägg -g -c es3.c  gcc -vägg -g es3.o Es3 

    -to -wall bannern är extremt viktig men du kommer också alltid att använda den. Den säger åt din uppskattade kompilator att ge dig (nästan) alla varningar. Och du bör alltid lyssna efter allvarliga varningar, det vill säga, fixa källdokumenten es3.C tills du slutar att få varningar.

    Flaggan -g är också viktig eftersom webbplatsen kräver gcc för att skriva felsökningsförslag till just det objektet och den körbara filen. Kunder kommer definitivt att använda en debugger (som gdb ) för att felsöka ditt program. y.

    För att få de faktiska listikonerna för ett mål eller en körbar fil behöver du nm .

    Självklart antar jag att du använder ett GNU/Linux-system (och jag antyder att du kontaktar GNU/Linux om du kanske inte redan använder det).

    Läs FAQ först: https://github.com/edenhill/librdkafka/wiki/FAQ

    Jag ville bara kompilera en till tillbaka till cpp_maker-katalogen i CentOS 8.3, men där uppstod ett fel.
    Kompilera med s ++ -oproduzent_cpp.cpp -lrdkafka ++

    På:

      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: i ` _start '-funktionen:(.text + 0x24): odefinierad referens till: "main"Collect2-fel: ld har rört utgångstillstånd 1 

    VIKTIGT: åta dig alltid att återskapa problemet i den senaste versionen som finns på marknaden (se https://github.com/edenhill/librdkafka/releases), om sidan inte återges i den senaste versionen, åta sig att fixa den. har fixats.

    VIKTIGT: vi kommer att utfärda stämplar om checklistans funktioner inte har slutförts nyligen.

    Ange följande information:

    • Blibrdkafka-val (versionsnummer eller en Git-tagg): <1.6.0>
    • Apache Kafka-version: <2.13-2.7.0>
    • librdkafka kundkonfiguration:
    • Driftutrustning:
    • Skicka in ved (med debug = .. utöver valfritt) med librdkafka
    • Ge mäklarens checkutdrag.
    • Kritiskt problem: Icke-kritiskt

    Jag vill ha som kan kompilera CentOS 8.3 i katalog 1 “producter_cpp”, men jag gjorde ett misstag.
    Kompilera med delaware ++ -oproduzent_cpp.cpp -lrdkafka ++

    VIKTIGT: Försök alltid att återskapa problemet i den bästa och senaste versionen (se https://github.com/edenhill/librdkafka/releases) där det ofta inte kan återskapas i den aktuella versionen kommer att fixas. p>

    VIKTIGT: Vi stänger om den från en cateringfirma ännu inte är klar.

    • librdkafka-produktion (fullständigt versionsnummer eller Git-tagg): <1.6.0>
    • Apache Kafka-paket: <2.13--2.7.0>
    • librdkafka klientkonfiguration:
    • Operativsystem:
    • PSkicka in loggarna (med debug = .. om det skulle behövas) librdkafka
    • Ge log mäklare blir av med.
    • Kritiskt problem: Icke-kritiskt
      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: i en `_start '-funktion:(.text + 0x24) Odefinierat: referens till "main"Samla2> Fel: ld returnerade 1 utgångsstatus 

    Exempel

    Ett av ett särskilt vanligaste kompileringsfel uppstår under länkning. Felet ser ut så här:

      ? rrr gcc undefined_reference.c/tmp/ccoXhwF0.o: Kör `main':undefined_reference.c :(. text + 0x15): odefinierad felreferens: `foo 'Collect2: Jag återställde # 1 utgångsläge$ 

    gcc fel odefinierad referens på marknaden till main

      int foo (void);int main (int argc, char ** argv)    int foo_val;    foo_val = foo ();    returnera foo_val; 

    Vi ser vald typ av deklaration för foo ( int foo (); ), men det behövs ingen definition för det (den faktiska funktionen). Vi försåg den viktigaste kompilatorn med funktionshuvuden, men det fanns ingen sådan funktion någonstans, så kompileringsfasen har alltid varit över och länken slutar alltid med något Undefined reference -fel.
    För att fixa detta fantastiska fel i vårt lilla program behöver vi bara lägga upp definitionen för foo:

    gcc misslyckas med odefinierad referens till huvud

      / - Förklaring av foo * /int foo (tom);/ 2 . Definition av foo * /int foo (tom)    retur 5;int main (int argc, char ** argv)    int foo_val;    foo_val = foo ();    returnera foo_val; 

    Den här koden är för närvarande faktiskt kompilerad. En annan situation uppstår när långivaren foo () finns i din helt egen separata källkod foo file.c (och just nu finns det en rubrik foo. H lämplig för att deklarera foo () , som har potential att finnas i foo.c såväl som jämfört med undefined_reference.c ). Åtgärda sedan problemet där du både länkar objektfilen foo.c , än mindre undefined_reference.c , eller samlar in två basfiler:

      $ gcc -celsius undefined_reference.c$ gcc -c foo.c$ gcc -o fungerande applikation undefined_reference.o foo.o$ 
      $ gcc -to Working_program undefined_reference.c foo.c$ 

    Det här är en mer utarbetad resväska som använder bibliotek som i den här huvudkoden:

      #include #include #inkludera int essential (int argc, char ** argv)    dubbla först;    öka andra;    dubbel produktivitet;    (argc förutsatt! = 3)            fprintf (stderr, "Användning:% s    n", argv [0]);        Returnerar EXIT_FAILURE;        / * Konvertera användarinmatning till siffror, de flesta andra felkontroller     (tomma) villkor som ska göras här. * /    första = strtod (argv [1], NULL);    andra = strtod (argv [2], NULL);    / * Använd funktionen bang () på grund av libm - detta ska resultera i en länk     5 . denna kod kommer att kompileras med libm definitive i händelse av fel! * /    Achievement = achievement (första, andra);    printf ("% f till% f =% ver  n", första, andra, kardinalitet);    Återgå EXIT_SUCCESS; 

    Koden är syntaktisk förbättrad i allmänhet, deklarationen för bang () finns på grund av #include , så vi försöker kompilera den och avsluta uppstår men länkfel som innehåller detta:

      RR gcc no_library_in_link.c -o no_library_in_link/tmp/ccduQQqA.o: I det "huvudsakliga" jobbet för närvarande:no_library_in_link.c :(. Odefinierad text + 0x8b): länk som kommer att 'pow'Collect2: Fel: ld studsade 1 avgångsläge$ 

    Detta beror på att inte alla definitioner till pow () hittades under dessa bindningssteg. För att lösa detta problem måste vi ange att vi vill binda till ett stridsmatematikbibliotek som heter libm -lm hål. (Observera att det i allmänhet finns plattformar, till exempel där macOS -ulti level marketing inte krävs, men om det finns i get odefinierad länk, krävs bibliotek.)

    Så vi använder termen “sammansättningsnivå” igen, specifik tid vanligtvis ett bibliotek (efter käll- och/eller modellfiler):

      $ gcc no_library_in_link.c -ulti-level marketing -o library_in_link_cmd$ ./library_in_link_cmd med 42 000 000 till potentialen på 4 000 000 motsvarar 16 000 000$ 

    Uppdaterad

    Är du trött på att din dator går långsamt? Irriterad av frustrerande felmeddelanden? ASR Pro är lösningen för dig! Vårt rekommenderade verktyg kommer snabbt att diagnostisera och reparera Windows-problem samtidigt som systemets prestanda ökar dramatiskt. Så vänta inte längre, ladda ner ASR Pro idag!


     

     

    Få fart på din dator idag med denna enkla nedladdning.

     

     

     

    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
    Gcc-Fehler Undefinierter Verweis Auf Main
    Errore Gcc Riferimento Non Definito A Main
    메인에 대한 Gcc 오류 정의되지 않은 참조