Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Unterschiede GCC

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.09.2004
    Ort
    Gelnhausen
    Beiträge
    25

    Unterschiede GCC

    Hallo Community!

    ich hätte mal eine Frage bezüglich GCC und seinen Kommandos.
    wenn ich GCC installiere habe ich ja nicht nur den befehl gcc, sondern auch cpp
    g++, etc. worin unterscheiden die sich?

    Meine cpp-programme kann ich nur mit cpp kompilieren, wozu brauch ich dann noch die anderen befehle?

    Und zudem, was genau macht eigentlich der behehl make?
    Wenn ich kompiliert habe, kann ich das programm ausführen und brauche dafür kein make..

    wäre nett , wenn mich da jemand mal aufklären könnte!

    Gruß
    Otto=)

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.07.2000
    Ort
    Österreich
    Beiträge
    189
    gcc ist hat nich nur ein c++ compiler. mit dem befehl gcc kannst du C programme kompilieren, mit g++ (bzw. cpp) kannst du c++ programme kompilieren, mit gcj java, ...

    mit make kannst das kompilieren automatisieren, das macht wenn du eine einzelne datei kompilierst noch nicht viel sinn, aber sobald du mehrerer dateien kompilieren musst ist es bequemer "make" einzutippen, als alles in der richtigen reihenfolge manuell zu kompilieren.

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.09.2004
    Ort
    Gelnhausen
    Beiträge
    25
    hallo alex,

    danke für deine antwort!
    wie arbeitet eigentlich make?
    erkennt der selbst die richtige reihenfolge oder wie funktioniert das?

  4. #4
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Damit make arbeiten kann benötigt es eine Datei, in der die korrekte Reihenfolge der Dateien und die Compileroptionen drin steht, das sogenannte "Makefile".

    Ein klitzekleines Beispiel:
    programm: liste.o
    <tabulator>gcc -o programm liste.o

    liste.o: liste.c
    <tabulator>gcc -c liste.c
    Was make damit macht ist ganz einfach.

    1. make schaut nach was das große Ziel ist: das "programm" soll erstellt werden.
    2. Dann wird geprüft, ob alle für programm nötigen Teile (liste.o) vorhanden sind.
    3.a Wenn ja, wird programm erstellt (gcc -o programm liste.o).
    3.b Wenn nein, muss erst liste.o erstellt werden.
    4. Dazu muss liste.c vorhanden sein.
    5. Diese wird mit gcc -c liste.c erstellt.
    6. Nun sind alle Abhängigkeiten für programm erfüllt und der Linker kann programm erstellen.

    Das wirklich witzige von make ist aber, dass es automatisch erkennt, ob sich einen Quelldatei seit dem letzten mal kompilieren verändert hat oder nicht. Wenn nicht, dann muss diese Datei nicht ein weiteres Mal übersetzt werden. So kann bei großen Projekten viel Zeit gespart werden.

    Wenn du aus dem Netz ein Programm als Quellpaket lädst, dann musst du doch meistens ein configure-Skript ausführen. Dieses Skript erstellt automatisch ein Makefile, wobei es die nötigen Informationen aus anderen Dateien erhält.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.09.2004
    Ort
    Gelnhausen
    Beiträge
    25
    ahh, vielen dank!

    Jetzt kapiere ich die Zusammenhänge!

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zusätzlich zum dem was die anderen schon geschrieben haben.

    Zitat Zitat von Otto-mit-gewehr
    wenn ich GCC installiere habe ich ja nicht nur den befehl gcc, sondern auch cpp, g++, etc. worin unterscheiden die sich?
    Wenn du eine Datei hast, die anhand der Dateiendung als C++ Source erkennbar ist, kompiliert auch gcc den C++ Code korrekt.
    Der wesentliche Unterschied bei der Verwendung von gcc statt g++ ist im Falle des Linkens, weil g++ die C++ Standardbibliotheken wenn nötig automatisch linkt, gcc nicht.


    Und zudem, was genau macht eigentlich der behehl make?
    Wenn ich kompiliert habe, kann ich das programm ausführen und brauche dafür kein make..
    Wie Boron mit seinem Beispiel gezeigt hat, ist make ein Regelinterpreter, der meistens zum Erstellen von Programmen benutzt wird.

    Eine Regel hat immer einen Namen, gefolgt von einer Liste von Abhängigkeiten und danach eine beliebige Anzahl von Befehlen, wie die Regel erfüllt werden kann.

    Die Defaultregel heißt "all", wenn make ohne Parameter aufgerufen wird, wird diese Regel bearbeitet.
    Man kann aber jederzeit auch eine der untergeordneten oder unabhängigen Regeln bearbeiten lassen.

    Code:
    all: foo bar
    
    foo:
        echo FOO
    
    bar:
        echo BAR
    
    foobar:
        echo FOOBAR
    #> make
    bearbeitet all, was die Abarbeitung von foo und bar nachsich zieht

    #> make foo
    bearbeitet nur Regel foo

    #> make foobar
    bearbeitet nur Regel foobar

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •