Was bedeuten Compiler und Linker? (War: HILFE???)



  • Ich habe gerade diesen Beitrag bekommen:

    "Zum programmieren brauchst du eigentlich nur einen Editor.
    Zum compilieren brauchst du einen Compiler und dann noch einen Linker, diese beiden Aufgaben erledigt unter Linux g++ aber wo es da Freeware fuer Windows zu gibt weis ich auch net."

    Aber was ist ein Compiler und Linker?

    Edit: Bitte aussagekräftige Titel wählen. Danke!



  • mal grob ausgedrückt:

    Compiler übersetzt dir das Programm in Maschinensprache,

    Linker bindet andere Dateien z.B. header ein,



  • Hallo!

    Bekommst du alles drei zusammen unter http://www.bloodshed.net/dev/devcpp.html!



  • Balder schrieb:

    mal grob ausgedrückt:

    Compiler übersetzt dir das Programm in Maschinensprache,

    Linker bindet andere Dateien z.B. header ein,

    Ja, das 1. hab ich dann verstanden aber das 2. nicht? Was tut rin Linker?
    Was soll der mit eingebundenen Dateien?



  • [entfernt, da falsch]



  • Vergiß das, das ist falsch.

    Was ein Compiler und ein Linker ist, bzw. wie die Übersetzung eines C++ Programms abläuft steht in jedem Anfängerbuch, deshalb hier nur im Überblick:

    1. Du schreibst dein Programm (Quellcode) in einem Texteditor.
    2. Der Präprozessor liest das Programm ein und bearbeitet alle Präprozessordirektiven (#include, #define ...) und gibt es dann an den Compiler weiter.
    3. Der Compiler analysiert das Programm auf syntaktische und semantische Fehler, übersetzt es in Maschinensprache, und erzeugt ein sog. Objektfile (*.obj unter Windows, *.o unter Unix)
    4. Der Linker verbindet alle Objektfiles, aus denen das Programm besteht, und alle benötigten Bibliotheken, zu einer ausführbaren Datei (bzw. *.exe unter Windows)

    (Die meisten Programme bestehen aus vielen Quelldateien, teilweise mehrere Tausend, die alle vom Compiler getrennt übersetzt werden, so dass du am Ende auch viele Objektfiles hast.)

    In einer integrierten Entwicklungsumgebung (IDE) wie DevC++ oder Visual Studio passieren die Schritte 2..4 automatisch, wenn du den richtigen Button anklickst. Ansonsten macht man das, indem man Befehle eingibt. Beispielsweise unter Linux:

    $ g++ -c datei1.cc
    $ g++ -c datei2.cc
    $ g++ -o meineausführbaredatei datei1.o datei2.o
    


  • @Bashar

    falsch? bezieht sich das auf mich und daishi oder nur auf daishi? (da sein kommentar weg is)
    Weil ich meine deine Antwort ist doch nur etwas ausführlicher als meine sonst nichts. Nagut das executable hab ich nicht drin, aber ansonsten stimmt meine aussage doch...
    oder nicht?!



  • Das falsch bezieht sich darauf, dass der Linker Header einbindet. Das macht der Präprozessor. Hab ich aber auch geschrieben.



  • hmm, nagut



  • Bashar schrieb:

    Vergiß das, das ist falsch.

    Was ein Compiler und ein Linker ist, bzw. wie die Übersetzung eines C++ Programms abläuft steht in jedem Anfängerbuch, deshalb hier nur im Überblick:

    1. Du schreibst dein Programm (Quellcode) in einem Texteditor.
    2. Der Präprozessor liest das Programm ein und bearbeitet alle Präprozessordirektiven (#include, #define ...) und gibt es dann an den Compiler weiter.
    3. Der Compiler analysiert das Programm auf syntaktische und semantische Fehler, übersetzt es in Maschinensprache, und erzeugt ein sog. Objektfile (*.obj unter Windows, *.o unter Unix)
    4. Der Linker verbindet alle Objektfiles, aus denen das Programm besteht, und alle benötigten Bibliotheken, zu einer ausführbaren Datei (bzw. *.exe unter Windows)

    (Die meisten Programme bestehen aus vielen Quelldateien, teilweise mehrere Tausend, die alle vom Compiler getrennt übersetzt werden, so dass du am Ende auch viele Objektfiles hast.)

    In einer integrierten Entwicklungsumgebung (IDE) wie DevC++ oder Visual Studio passieren die Schritte 2..4 automatisch, wenn du den richtigen Button anklickst. Ansonsten macht man das, indem man Befehle eingibt. Beispielsweise unter Linux:

    $ g++ -c datei1.cc
    $ g++ -c datei2.cc
    $ g++ -o meineausführbaredatei datei1.o datei2.o
    

    OK, dann hat sich die Frage auch erledigt! DANKE

    Jetzt hab ich auch das Programm downgeloadet aber wie jetzt anfangen?
    Bei VB konnte ich ein fenster erstellen wo ich dann einfach die Buttons,Textfelder u.s.w. reinsetze aber wie muss ich das hier machen (Programm: DEV-C++)
    Und hat irgendjemand ahnung wo man eine Schöne liste (am besten PDF) von Commandos findet?
    Eins noch, könnte mir bitte jemand ein kleines Programm zuschicken? Damit ich jedenfalls ein anfangspunk habe das ich dann mit dem DEV-C++ bearbeiten und mir angucken kann? Das wäre nett! (E-Mail: Joachim1406@hotmail.com)
    DANKE schon im vorraus!



  • sieh doch einfach mal bei den tutorials nach...
    ansonsten gibts da noch eine suchmaschine mit Namen google



  • 1. Ide's nehmen dir die Arbeit ab, wennst glueck hast ... alle einstellungen sind in sogenannten projektfiles abgelegt. wenn die dan in der Ide laedst, zieht er alles an was du brauchst. Compile irgendwo (je nach ide) druecken, und fertig. Dateiformat haengt von der IDE ab. steht aber meistens bei, ob das Project fuer Visual C++, Borland C++ Builder oder aehnliches ist.

    2. das uebersetzen und linken von Programmen und teilweise umfangreichen Librarys ist nen knochenjob :p Man koennte ne Batch nehmen, aber die ist zu unflexiebel. Aus der unix welt kommend hat sich nen hilfsprogramm(make) darauf spezialisiert, diese routinejobs hintereinander auszufuehren, wenn man ihm denn die Abhaengigkeiten per TextDatei vorgibt.
    Als unter Linux schaun, ob du Dateien mit dem Namen MAKEFILE findest ... dann versuch dein Glueck und ruf mal "./configure" (passt die makefiles an systemspezifische gegebenheiten an) und danach "make" auf
    unter windows gibts aehnliches ... bei VC++ heisst das tool nmake.
    Steht bei den Besipielen aber auch meist dabei, wie es zu uebersetzen ist. Unter Linux ist das quasi Standard, und auch die Ide's halten sich drann, so das nen project was mit ner IDE (KDevelop z.B.) erstellt wuerde auch mittels configure und make uebersetzen kannst, ohne die IDE zu haben ...
    Wenn du unter windows mit nem gcc port abreitest, dann verhaelt der sich fast wie die Linux version ...

    3. wenn das alles nicht hasst ... musst es selbst erstellen. Das machen die IDE's fuer dich (weiss nicht was du nutzt) ... Neues Projekt erstellen, und alle die cpp und h dateien in das Project einfuegen. Noch ne halbe stunde mit compilereinstellungen rumaergern, dann laeufts vielleicht mal irgend wann.

    Ciao ...


Log in to reply