g++ will nicht kompilieren



  • Hallo!
    Ich habe bis jetzt nur unter Windows programmiert und will es jetzt mal unter Linux probieren.
    Ich habe schon kleine programme, welche in einer .cpp datei sind problemlos kompiliert.
    Jetzt wollte ich ein größeres programm, was über mehrere .cpps und .hs geht kompilieren und werde sofort mit Fehlern beworfen, ich hätte gewisse funktionen nicht deklariert, obwohl dies der Fall ist.

    Mit dem MSVC++ lässt sich alles problemlos kompilieren.
    Reicht es, wenn ich die .cpp Datei kompiliere wo die main() funktion enthalten ist, oder muss ich da nochetwas machen?

    Sorry, habe noch nie von Hand kompiliert!



  • Achja, ich kompiliere im moment so:
    g++ datei.cpp



  • Linux noob schrieb:

    Reicht es, wenn ich die .cpp Datei kompiliere wo die main() funktion enthalten ist, oder muss ich da nochetwas machen?

    Wenn du alles includet hast dann nicht

    #include "Name_Der_Datei"
    

    Und kompilieren kanst du auch so g++ datei.cpp -o test (dann heißt die ausführbare Datei test) 😉



  • Ich habe es jetzt rausgefunden, man muss einfach alle .cpp dateien als parameter übergeben, dann gehts. 😉

    Eigentlich merkwürdig, da ja normalerweise alle Dateien included werden müssten...



  • Perner schrieb:

    Eigentlich merkwürdig, da ja normalerweise alle Dateien included werden müssten...

    Wenn Du die Dateinamen der Include-Anweisungen mit den übergebenen vergleichst, dürftest Du feststellen dass die Endung sich unterscheidet. Will heissen, die .cpp-Dateien werden natürlich nicht included, sondern die Header. Alles zusammen compilieren und (wichtiger) binden muss man immernoch selbst.



  • Einfach g++ a.cpp b.cpp c.cpp -o prog (und gegebenfalls noch nützliche Flags wie -Wall -W -pedantic -std=c++98 für Warnungen etc.)

    Das Problem ist, dass du so immer alle Dateien mitkompilierst was natürlich Zeitaufwendig ist. Daher kannst du auch Code-Dateien in Objekt-Dateien umwandeln und die den Linkerzusammen fassen lassen: g++ -c a.cpp erzeugt dir eine Datei a.o . Das machst du eben auch für b.cpp und c.cpp und am Ende einfach ein g++ a.o b.o c.o -o prog . Da das manuell durchführen natürlich sehr zeitaufwendig ist benutzt man idr Makefiles. Hier könnte die Die ultimative Makefile von Volkard weiterhelfen.

    Ansonsten nimm einfach eine IDE die sich drum kümmert, zB KDevelop oder Emacs mit Cedet.


Anmelden zum Antworten