Kompilieren mit gcc schlägt fehl



  • Hallo ich habe nur zum test ein Hallo Welt programm mit einem cout:

    #include <iostream.h>
    using namespace std;
    
    int main()
    {
        cout << "Hello World!";
        return 0;
    }
    

    edit nman: Laaaaaange Fehlermeldung wegeditiert.



  • Interessant. Wolltest du das nur mitteilen, oder hast du auch eine Frage?

    Ich würde dir raten, die Fehlermeldungen zu lesen, vor allem die am Anfang. Da steht nämlich wortwörtlich drin, was falsch ist.



  • Ich würde gernen wissen wie ich das Problem löse



  • Das ist zwar immer noch keine Frage, aber ich will mal nicht so sein 😉

    Du löst das Problem, indem du die Fehlermeldungen liest und verstehst. Dabei solltest du dich immer nur mit den ersten paar Meldungen befassen. Oft kommt es zu Folgefehlern, die Anzahl der Fehlermeldungen sagt nicht viel über die tatsächliche Anzahl der Fehler in einem Programm aus.

    Das ist der relevante Teil:

    23 schrieb:

    <iostream> instead of the deprecated header <iostream.h>.



  • MFK schrieb:

    Das ist zwar immer noch keine Frage, aber ich will mal nicht so sein 😉

    Du löst das Problem, indem du die Fehlermeldungen liest und verstehst. Dabei solltest du dich immer nur mit den ersten paar Meldungen befassen. Oft kommt es zu Folgefehlern, die Anzahl der Fehlermeldungen sagt nicht viel über die tatsächliche Anzahl der Fehler in einem Programm aus.

    Das ist der relevante Teil:

    23 schrieb:

    <iostream> instead of the deprecated header <iostream.h>.

    Danke erst einmal für deine Antwort und für diesen Tipp.
    Muss mich erst einmal vertraut machen mit dem gcc.

    Aber die aussage versteh ich leider nicht so wirklich.

    Synatx mässig habe ich versuche so zu includieren:

    #include <iostream>
    //und so 
    #include <iostream.h>
    

    bei beiden ergaben sich Fehler. Würde mich freuen wenn du mir die Fehlermeldund erläutern könntest



  • |23| schrieb:

    bei beiden ergaben sich Fehler. Würde mich freuen wenn du mir die Fehlermeldund erläutern könntest

    Sicher, wenn du sie mir verrätst. Aber bitte nicht alle, wenn es wieder so viele sind. Die ersten paar sollten ausreichen. Bitte die von der Version ohne .h, die sollte eigentlich richtig sein.



  • MFK schrieb:

    |23| schrieb:

    bei beiden ergaben sich Fehler. Würde mich freuen wenn du mir die Fehlermeldund erläutern könntest

    Sicher, wenn du sie mir verrätst. Aber bitte nicht alle, wenn es wieder so viele sind. Die ersten paar sollten ausreichen. Bitte die von der Version ohne .h, die sollte eigentlich richtig sein.

    Habe ich mir auch gedacht. Nun ja, werde ich gleich mal nach der arbeit versuchen und schauen was da für eine Meldung kommt. Wenn ich die andere auch nicht auflösen kann melde ich mich. Danke MFK

    Gruß

    23



  • Hallo,

    du solltest auch eher g++ statt gcc aufrufen.



  • cj@work schrieb:

    Hallo,

    du solltest auch eher g++ statt gcc aufrufen.

    also ob ich g++ oder gcc nehme immer das sleber bei:

    #include <iostream>
    

    bekomme ich oben:

    edit nman: Fehlermeldung hilft nicht -> weg

    und ganz unter:

    edit nman: Fehlermeldung hilft nicht -> weg
    ...
    main.cc: In function 'int main()':
    main.cc:6: error: 'cout' was not declared in this scope
    main.cc:6: error: 'endl' was not declared in this scope
    

    Jemand eine idee wo das der wurm drin ist?



  • So wollte es gehen:

    std::cout<<"test"<<std::endl;
    

    Komisch. Das sollte sich eigentlich durch "using namespace std;" erledigt habe.



  • Diese ellenlangen Fehlermeldungen bringen uns nichts, sorry.

    Wenn das nicht kompiliert, dann ist Deine g++-Installation kaputt.

    // hello.cpp
    // kompilieren mit "g++ -o hello hello.cpp"
    #include <iostream>
    
    int main()
    {
        std::cout << "Hello world";
    }
    


  • nman schrieb:

    Diese ellenlangen Fehlermeldungen bringen uns nichts, sorry.

    Wenn das nicht kompiliert, dann ist Deine g++-Installation kaputt.

    // hello.cpp
    // kompilieren mit "g++ -o hello hello.cpp"
    #include <iostream>
    
    int main()
    {
        std::cout << "Hello world";
    }
    

    genau so gemacht nun bekomme ich:

    zyon@fuckup:~$ g++ -o hello hello.cpp
    /usr/bin/ld: crt1.o: No such file: Datei oder Verzeichnis nicht gefunden
    collect2: ld returned 1 exit status
    


  • dann ist Deine g++-Installation kaputt.

    Genau so ist es - wobei das File eigentlich zur glibc gehört. Also installier mal glibc-devel oder libc6-dev oder wie auch immer das heißen mag. Eigentlich sollte das durch die Dependencies automatisch geschehen sein.



  • hab noch nen paar libs install. nun das:

    zyon@fuckup:~$ g++ -o hello hello.cpp
    /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/crt1.o: In function `_start':
    ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    collect2: ld returned 1 exit status
    


  • Dann hast du dich entweder bei main vertippt (so schwierig das auch sein mag :D), oder es ist noch viel kaputter als man zuerst denken konnte.



  • nun habe ich bei:

    #include <iostream.h>
    using namespace std;
    
    int main()
    {
        cout << "Hello World!";
        return 0;
    }
    
    zyon@fuckup:~$ gcc -o test main.cc
    /tmp/ccjglEt6.o: In function `main':
    main.cc:(.text+0x25): undefined reference to `std::cout'
    main.cc:(.text+0x2a): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    /tmp/ccjglEt6.o: In function `__tcf_0':
    main.cc:(.text+0x47): undefined reference to `std::ios_base::Init::~Init()'
    /tmp/ccjglEt6.o: In function `__static_initialization_and_destruction_0(int, int)':
    main.cc:(.text+0x74): undefined reference to `std::ios_base::Init::Init()'
    /tmp/ccjglEt6.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    

    Ich versteh es einfach nicht mehr. muss ich wohl mein system killen 😞



  • nun geht es mit

    g++ -o helo main.cc 😃 wieso Danke an alle



  • Mach noch <iostream> aus <iostream**.h**>.



  • nman schrieb:

    Mach noch <iostream> aus <iostream**.h**>.

    habeich schon sonnst geht es auch nicht.

    Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
    

    Ich muss echt mal sagen der gcc/g++ ist ja wirklich am rum zicken.. na ja dann wird mein std halt mehr zum std 😃 gruß auf Göttingen



  • Hey wieso ist der zickig? 😃

    Wenn Deine Installation nur halb komplett ist, war das alles nicht verwunderlich, und deinen Versuch, C++-Programme mit dem C-Compiler zu übersetzen, hast Du selbst schon drangegeben, oder? 😃


Anmelden zum Antworten