You are currently viewing Łatwy Sposób, Gdy Trzeba Naprawić Błędy Gcc, Niezdefiniowane Odniesienie Do Głównego

Łatwy Sposób, Gdy Trzeba Naprawić Błędy Gcc, Niezdefiniowane Odniesienie Do Głównego

 

Zaktualizowano

  • 1. Pobierz ASR Pro
  • 2. Uruchom program
  • 3. Kliknij „Skanuj teraz”, aby znaleźć i usunąć wszelkie wirusy z komputera
  • Przyspiesz swój komputer już dziś dzięki temu prostemu pobieraniu.

    Jeśli okaże się, że błąd gcc dotyczy głównej niezdefiniowanej, ten przewodnik może pomóc klientom. g.Błąd: Niezdefiniowane odniesienie do ‘main’, gdy programy w C są bardzo głupim błędem, ponieważ programista występuje, gdy krytyczna wydajność () nie istnieje w programie. Jeśli jakakolwiek osoba użyła głównego zadania () i sposobu, w jaki błąd nadal istnieje, każdy powinien sprawdzić pisownię ze względu na główną funkcję ().

     

     

    g.

    Twoja główna oferta mogła zostać określona, ​​np. jako wstępne przetwarzanie.Aby zobaczyć, co robi przetwarzanie wstępne, wypróbuj gcc -C -E es3.c> es3.i , a następnie użyj edytora actif, aby sprawdzić wygenerowany plik es3.i (i egzamin main v).

    Na początku możesz chcieć (ponieważ nadal jesteś początkującym)

    . Zbierać

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

    Baner

    -o -wall jest niezwykle ważny i zawsze będziesz go używać. Mówi twój kompilator, aby dać ci (prawie) wszystkie powiadomienia. I zawsze powinieneś słuchać strasznych ostrzeżeń, to znaczy naprawiać dokument referencyjny es3.C , aż przestaniesz otrzymywać ostrzeżenia.

    Flaga -g jest również ważna tylko dlatego, że wymaga gcc do opracowania informacji debugowania dla tego konkretnego obiektu i pliku wykonywalnego. Klienci mogą następnie użyć debugera (takiego jak w gdb ) do debugowania programu. tak.

    Aby uzyskać aktualną listę ikon nowego dobrego obiektu lub pliku wykonywalnego, potrzebujesz nm .

    Oczywiście zakładam, że bez wątpienia używasz systemu GNU/Linux (i sugeruję, abyś skontaktował się z GNU/Linuksem, jeśli jeszcze go nie używasz).

    Najpierw przeczytaj FAQ: https://github.com/edenhill/librdkafka/wiki/FAQ

    Chciałem tylko skompilować kolejną podeszwę w katalogu cpp_maker w CentOS 8.3, niemniej jednak wystąpił błąd.
    Skompiluj z s ++ -oproduzent_cpp.cpp -lrdkafka ++

    Wł.:

      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: w funkcji ` _start ':(.text + 0x24): niezdefiniowane odniesienie do: „główny”Błąd Collect2: ld funkcje osiągnęły stan wyjściowy 1 

    WAŻNE: bez wyjątku postaraj się odtworzyć problem w modnej, aktualnej wersji dostępnej na rynku (patrz https://github.com/edenhill/librdkafka/releases), w przypadkach, gdy nie jest on powielany w najnowszy model, spróbuj go naprawić. został naprawiony.

    WAŻNE: wydamy pieczątki, jeśli wytyczne nie zostały ostatnio wypełnione.

    Prosimy o rozszerzenie następujących informacji:

    • Wybór Blibrdkafki (pęczek wersji lub tag Git): <1.6.0>
    • Wersja Apache Kafka: <2.13-2.7.0>
    • librdkafka Consumer config:
    • System operacyjny:
    • Przesyłanie logów (za pomocą debug = .. i opcjonalnie) za pomocą librdkafka
    • Podaj komentarze do czeku brokera.
    • Problem krytyczny: niekrytyczny

    Musiałbym skompilować CentOS 8.3 w unikalnym katalogu “producter_cpp”, ale popełniłem błąd.
    Kompiluj dodatkowo do g ++ -oproduzent_cpp.cpp -lrdkafka ++

    WAŻNE: Zawsze staraj się odtworzyć problem w swojej najnowszej wydanej wersji (patrz https://github.com/edenhill/librdkafka/releases), gdzie nie zostanie on odtworzony w aktualnej wersji znajdź się rozwiązany. p>

    WAŻNE: zamkniemy, jeśli najważniejsza lista kontrolna nie jest jeszcze kompletna.

    • konto librdkafka (pełny numer wersji lub tag Git): <1.6.0>
    • Pakiet Apache Kafka: <2.13--2.7.0>
    • Konfiguracja klienta librdkafka:
    • System operacyjny:
    • PPrześlij logi (w razie potrzeby debug oznacza .. ) librdkafka
    • Dostarcz wyciągi z usługi brokeringu dzienników.
    • Problem krytyczny: niekrytyczny
      /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o: w dowolnej funkcji `_start ':(.text + 0x24) Nieokreślone: ​​odniesienie do pomocy "główne"Collect2> Błąd: ld zwrócił 1 status wyjścia 

    Przykład

    Jeden z najczęstszych błędów kompilacji występuje podczas kojarzenia. Błąd wygląda tak:

      dolary gcc undefined_reference.c/tmp/ccoXhwF0.o: Wykonaj `main':undefined_reference.c :(. frazy + 0x15): niezdefiniowane odniesienie do błędu: `foo 'Collect2: ld odnowiony 1 stan wyjścia$ 

    gcc error undefined skup się na głównym

      int foo (void);int real (int argc, char ** argv)    int foo_val;    foo_val = foo ();    zwróć foo_val; 

    Weryfikujemy jakiś rodzaj deklaracji dla foo ( int foo (); ), ale nie ma na to wyjaśnienia (rzeczywista funkcja). Dostarczyliśmy mojemu kompilatorowi nagłówki funkcji, ale nigdzie nie było takiej funkcji, więc miejsce kompilacji się skończyło i linker zawsze kończy się błędem Undefined reference .
    Aby rozwiązać ten błąd w naszym małym programie, natychmiast musimy opublikować definicję foo:

    gcc błąd niezdefiniowane odniesienie do głównego

      - * Wyjaśnienie foo * /int foo (puste);/ Definicja foo * /int foo (puste)    powrót 5;int main (int argc, char ** argv)    int foo_val;    foo_val = foo ();    zwróć foo_val; 

    Tak się składa, że ​​ten kod jest już skompilowany. Inna sytuacja ma miejsce, gdy powiem, że źródło foo() znajduje się w osobnym źródle Twojej firmy foo file.c (i jest też nagłówek foo. H do zadeklarowania < code> foo () , które będzie w foo.c tak jak w rzeczywistości jako undefined_reference.c ). Następnie napraw niepowodzenie polegające na tym, że oboje łączycie obiekt, przesyłając foo.c , nie mówiąc już o undefined_reference.c , a także skompiluj dwa podstawowe pliki:

      pieniądze gcc -c undefined_reference.c$ gcc -c foo.c$ gcc -o wykonanie programu pracy undefined_reference.o foo.o$ 
      $ gcc -aby pomóc Ci program_pracy undefined_reference.c foo.c$ 

    Jest to bardziej złożona torba podróżna, która wykorzystuje biblioteki takie jak w głównym kodzie:

      #include #include #włącz int main (int argc, char ** argv)    najpierw podwójnie;    podwójna sekunda;    podwójna wydajność;    (argc zakładając! = 3)            fprintf (stderr, "Użycie:% s    n", argv [0]);        Zwraca EXIT_FAILURE;        / * Konwertuj wpisywanie użytkowników na liczbę, wiele innych sprawdzania błędów     (puste) należy zrobić tutaj. 2 . /    pierwszy = strtod (argv [1], NULL);    drugi = strtod (argv [2], NULL);    / * Użyj funkcji pow() z powodu libm - ten rodzaj spowoduje utworzenie linku     * ten kod skompiluje się w libm tylko w przypadku błędu! * /    Osiągnięcie = osiągnięcie (pierwsze, drugie);    printf ("% f do% g =% f  n", pierwszy, drugi, kardynalność);    Powrót EXIT_SUCCESS; 

    Kod jest ogólnie poprawny składniowo, deklaracja dla bang() istnieje z powodu #include , więc staramy się go skompilować aby uzyskać ale błąd linku, który zawiera to:

      $ gcc no_library_in_link.c -o no_library_in_link/tmp/ccduQQqA.o: W jaki sposób „główne” zadanie:no_library_in_link.c :(. Niezdefiniowany tekst + 0x8b): link do strony internetowej `pow 'Collect2: Błąd: ld odrzucił 1 stan wyjścia$ 

    Dzieje się tak, ponieważ nie wszystkie wyjaśnienia dotyczące pow() zostały znalezione podczas kroku wiązania. Aby rozwiązać ten problem, wszyscy musimy pomyślnie określić, że chcemy, aby połączyć się z biblioteką matematyki walki o nazwie libm -lm hole. (Zauważ tylko, że istnieją platformy, na przykład, na których macOS -lm nie jest wymagany, ale jeśli przez to uzyskaj niezdefiniowany link, wymagana jest biblioteka.)

    Tak więc wielokrotnie używamy terminu „poziom zespołu”, tym razem zwykle biblioteki (po plikach źródłowych lub modelach):

      $ gcc no_library_in_link.c -lm -o library_in_link_cmd$ ./biblioteka_w_linku_cmd z 42 000 000 na naszą własną potęgę 4 000 000 odpowiada 16 000 000$ 

    Zaktualizowano

    Czy masz dość powolnego działania komputera? Denerwują Cię frustrujące komunikaty o błędach? ASR Pro to rozwiązanie dla Ciebie! Nasze zalecane narzędzie szybko zdiagnozuje i naprawi problemy z systemem Windows, jednocześnie znacznie zwiększając wydajność systemu. Więc nie czekaj dłużej, pobierz ASR Pro już dziś!


     

     

    Przyspiesz swój komputer już dziś dzięki temu prostemu pobieraniu.

     

     

     

    Gcc Error Undefined Reference To Main
    Gcc-fout Ongedefinieerde Verwijzing Naar Hoofd
    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 오류 정의되지 않은 참조
    Gcc-fel Odefinierat Referens Till Huvud