[Playlisten] [Impressum und Datenschutzerklärung]

04.02.1 Übersetzung von C und C++


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

was passiert ?? Detail beim Compiler das interessiert mich jetzt für zehnwir haben ein Compilerwenn ich sagen Compiler ist das eigentlich nicht ganz korrektda mein Präprozessorund ein Compiler im engeren Sinne und ?? mein linkereigentlich das komplizierte es ist nicht nur ein Compiler bei C und C plus plusSonne sind drei Schritte die der Passierender mittlere der wichtigste heißt dann bei den Compileraber die beiden haben andern Telefon der danach haben noch andere Namenimbeim Kompilieren von siekombinieren von C geht es erst mal los mit einem PräprozessorEnglisch PräprozessorPräprozessorEinfuhrverarbeitungporträtvor Prozessaufarbeitungvor Verarbeiterganz ?? Sendschreibenträgt Rothsselbst zurdas ist das erste was passiertwenn sie übersetzt wird dann kommt der echte Compilerunddann ist der Linker dranMaisist man so bisschen schludrig und nennt das ganze zusammenkombinierenaber streng genommenist der Compiler nur das was in der Mitte passiert das ist der wesentliche Schrittwaren beim übersetzen von Sieg und in Maschinenspracheabernicht der einzige Schritt der passiertjetzt immer grob was die einzelnen jeweils machender Präprozessorder lädt Dateien dazufremdeDateien sozusagendas aber schon mal gesehen an welcher Stelle aber das schon mal gesehendas Institut das ist ein Befehl an den Präprozessorlade mir irgendeine Datei dazuMakros definierenKonstanten definierensowas macht der PräprozessorMakroseinsetzen sollte seit TagenwarenTeil des Codes überspringendas es ganz pervers dem Report mit dem Präprozessor können Sie sagen wovon ihr Visier den Teillast mal ausnicht mit Kommentarensondern mit richtigen Sprunganweisungendass wir typischerweise verwendet um Programmefür mehrere Plattformen bereitzustellendas IC Programm haben ?? Blabla ich hab es ein Teil des Codes überspringenTeil des Codes überspringenähm ständig vor sie haben ein Programm das sowohl unter Windows laufen soll wie auf dem Mac laufen solldann kann man sich da raus finden indem man sagt okay diesen Teil des Programms bitte nur über unter Windows übersetzen und diesen Teil des Programms bitte nur auf dem Mac übersetzenlediglich übersprungen werden je nach Plattformdas sehen Sie auchmassiv ihr bei denMSB Prozessorenje nachdem welcher Prozessordrin ist passiert was andereshat es kurz überspringen iststand er für den Präprozessordas ist mehr oder minder aus dem Körper zu so machtoder minder intelligente Suchen und Ersetzenaus der Dax Arbeit und kennenähmmit ein paarSprints hier nochein zweite Sachen überspringen kanndanach kommt der echte Compilerder Punkt sich jede Zehdateian bisher nur Maine Punkt Cund meinProgramm an die schon sehr wohl null eins Punkt Cjede dieser ZehdateienPunkt der sich anJEDE Punkt C Dateiundzwarübersetzte dienachdem der Präprozessordran warund sein Suchen und Ersetzen gemacht hatandas Ergebnis nennt sichObjektkotobjektDatei Ergebnisist dann eine Punkt oder Teil für jedesfür jede Zehdateifinden Sie eine Punkt oder Teil das istmehr oder minder Maschinenspracheetwas garniertwardaZusatzinformationenwas jetzt genau wo stehtwas wohin verfrachtet werden soll ?? nunmehr der Minister schon Maschinenspracheder Compiler machtdie Haupt den Hauptteil der Übersetzung von zehn Maschinensprachepackt das ganze nett zusammen das andere was mit anfangen könnenan ?? oder Thai Das heißt Objekt Rotwein in diesen Dateien im Prinzip Objekte stehen aber nicht Objekte des Objekt und den Programmierenandere Objekte binäre Objekte Programme als binäre Objektedeshalb proObjektdateienwerden ??und dann gibt'sals dritter im Bunde den Linker der linken nimmt diese Objektdateienund bindet sie zu einer ausführbarenDatei zusammen bindetBlinkerverbinden offensichtlichbindet die O Dateien zu einer ausführbarenDatei zusammenbindetoder Dateien zu?? ausDateizusammenausführbareDatei zusammenunter Windows wäre das typischerweiseeine Punkt exeDateiirgendwozeigeeinenNamendas Programme VerzeichnisprogrammeVerzeichnis reingucken könnenda sollten das sinnvollerweiseIrgendwo Punkt exe Dateien stehenhier sehen Sie einenACDCEDT Punkt Exceleine DLL ist auch aus Barcode wird aber von anderen Programmen benutzt hier sehen Sie ein AkkuprogrammPunkt Echsedas wären so die klassischen Dateien wieder vom Compiler entstehen Punkt Echse der ?? hält es auch ausführbardessen Bibliothek noch eingebunden zur Laufzeit lassen sie später mal erzählen Komma typischerweisewenn Sieein Windows-Programm kombinieren würde Punkt Exit rausein ausführbare Datei das würde der Compiler machenQuatsch der Linker machen ja selber das würde der Linker machender Compiler erzeugt etwa zwischen Dateien für jede Zieldatei einem Punkt oder Teil und der Linker bindet die zusammenindie große Frage ist wozu brauche ich den Blödsinn warum mach ich drei Schrittedas mit dem Präprozessorhat sich über die Jahre herausgestelltdas Wort natürlich keine so gute Idee die modernen Spracheneinebesondere Gabe und sie sharp haben keinen echten Präprozessormehrda war schon gar nicht die Kapazitätenwinziges bisschen an Präprozessortrennen Ansatzes der Auslieferungder Präprozessor war keine gute Idee hat sich im Laufe der Zeitherausgestellter was sie angeht und C plus plus angeht muss man leider damit lebennimmt es also als historisches Körnchen Salz das Libretto zu verbrauchenPunkter wurde Compiler sowieso keine Frage mache bei der Linkerbewegt und erst mal komisch warum solch ein Linker benutzengesetzlich nicht sofort vom Compilerin eine ausführbare Glosse warme Datei die einzige ausführbare Dateinundie Idee dahinter ist die folgendeandie Idee war folgende dass ich mein Programmein Lückentextfür das was jetzt gerade auf male das ich mein Programm zerlegenverschiedeneCedateieneine Zieldatei sagt vielleicht wie servus anzusteuern sind eine C Datei sagt wie das Licht ausmachen oder eine C Datei sag ich mit dem Drucker bescheid dem Drucker sprechen und so weiter und sofortdas Programmodul amüsierenicht alles in eine Datei rein klatschen sondern Funktion Zusammenfassevariablenzusammenfasste was nötigund die jeweils in eine Datei bringenmehrere Fehler dein bilden dann ein Programmdas an dem Praktikum schon gesehenmit meinem Werbung Punkt sieum einesehr Bedienungsfunktionausgelagert wurden in eine einzigeDatei das ist einmal ein Mittel um das ganze etwas übersichtlicher zu halten dass sie nicht Roman in den einzelnen Dateien habensondern dass esrelativkurze Dateien werden alsofünf hundert Zeilen hat in einer Zieldatei dann sollte mich auch schon ein Ende haben ?? überhaupt was los isterdie werden einzeln kombiniertvomCompileryenjeweils ?? oder Teil das macht der Konzern das macht der Compilersich jeder einzeln anPunkt ohKomma waswodas ist der Job des Compilersübrigenslassen sich auch ?? dazusagenhier sagen Sie dem Entwicklungssystemwas er denn den Compiler zum Fraß vorwerfen sollten sich hier Edfilesund weitere Zederteildazu nehmen und dann der Liste haben damit sagen Sie dem Compilerwelche Zeder teilen den zu kombinieren sindKomma das EntwicklungssystemTeil des im Compiler mittlerweilejeder diese gesamte Distanz die Dateien durch jetzt steht er nachher nur C Dateien sind keine Headerdateienoder was das Praktikumgesehen hatte ich den eigentlich nur die Zieldatei drin welche Zieldateien sind ?? zu kombinieren ?? Compiler kriecht sie Lateinund hiermit diesem Projektin den Projekteinstellungensagen sie dannim Compilererst ein ?? eingesandt erst bei dem Entwicklungssystemdie ITEntwicklung Umgebung sagen sie welche Dateien dazu gehören und die Windows Umgebung sagt einem Compiler was er denn kombinieren soll jetztmuss ?? alle Dateien aufgeführt haben die kombiniert werden sollenEvent jetzt drei Compiler macht Objektcoderausund der Linker nimmt sich diesen Objekt gutund bindet den zusammen zu ausführbarenCode das macht den Winterunter Windows werde das jetzt mal ?? Punkt Echseähmbei dem Angebot bei Makoto ?? hier heißt es ganz absurdegal auf jeden Fall ausführbarausführenBesuchder Liga sucht sich seit anderem paar Bibliotheken zusammenDetails mit gleich einigen jetzt aberes wesentlich was er tut ist das ?? der Kunden undund daraus eine Auswahl der Time vielleicht Komma komm noch irgendwelche Bibliotheken dazuschreibt immer Websendlich über Dinge zu Leibovitzbei der Sonne schöner wenn das Schreiben nicht als Gips sondern nebst Leibovitz Konrad auch noch dazuder linke dazu bindetamdas ist die Arbeitsteilungzwischen Compiler und Linkerwarumdie große Frageder Gedanke derdie Nummer zu Beginn hatte der Gedanke warseinerzeit eine Rechnung ist der Namedas übersetzen dauertdauerte richtig heftig langeund deshalb wollte man so wenig übersetzen wie möglichvon der Gedankebin ich nur in dieser Datei in dieser Zieldatei was änderekann ich nur mit dieser Arbeitsteilungsagen dass der Compiler diese Dateien liegen lässt den ?? sicher gar nichts geändertvielmehr wird nur der Linkerden bestehenden Objektcode nehmenund alles wieder zusammen binwas war der Gedanke dahinter Zeit sparen beim übersetzenich übersetzen würde hier die Zeder dein Gewicht geändert haben sich dann jeder Job des in der Entwicklungsumgebungfestzustellen welche sie geändert habenamoder es gibt Spezialprogramm dazu das nennt sich Macseien dafür zuständig Beistrich denn was hat sich geändert was muss ich jetzt tunsie keinen Gedanken verschwendet passiert automatisch heutzutagealso es wird festgestelltevangelische mit passiv es wird festgestellt welche Zieldatei sich geändert hat nur die wird übersetztund der Linker bindet das dann alles zusammen mit den bestehenden anderenObjektdateiendas ist der Gedanke dahinter das übersetzen schnellerstattfindendeshalb diese Arbeitsteilung mit Compiler und Linkeres gibt'smodernere Sprachen vergisst man ganz allgemein in den dieses linkenbeim Start des Programms stattfindetsein ?? gar nicht mehr stört eines Arbeitsteilunggar nicht mehrvordem Erstellen des Programmsder Autobahn Datei stattfindet sondern sozusagen teilweise nachherbeim Start stattfindenichsollte mal zeigen wann sie Bekanntschaft mit diesemmit dem Compiler und den Linker machen nämlich vom Präprozessor gar nicht geredetder Pass jedoch zwischendurch jede Datei wird für sich einmal durch den Präprozessor dann auch noch geschickt das das erste was passiert jede Datei für sich durch den Präprozessorund dann geht sie eigentlich erst mit echten Compilers ein