kostenloser Webspace werbefrei: lima-city


Werden Funktionen von Standardbibliotheken "einkompiliert"?

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Es ist ja kaum möglich C Programme zu schreiben ohne Funktionen aus den Standardbibliotheken wie z.B. stdio.h zu verwenden. Aber werden diese Funktionen bem kompilieren mit z.B. gcc in das fertige, ausführbare Programm einkompiliert also das das Programm selber diese nicht mehr aus externalen Dateien öffnen muss oder wie ist das?

    Weil wenn ich das Programm weitergebe und der PC des "types" der es bekommt hat diese Funktion nicht zurverfügung, kann es dann trotzdem noch geöffnet werden?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Es werden die Funktionen mitkompiiliert, es würde ja sonst keinen Sinn machen, wenn man unkompiilierten Bibliotheken mitgeben müsste. Da aber zum Beispiel stdio.h auf Systemfunktionen zugreift, die der typ iwie blockiert hat, kann ich mir vorstellen, dass das bei ihm nicht funktioniert.
  4. krisi12345 schrieb:
    Es ist ja kaum möglich C Programme zu schreiben ohne Funktionen aus den Standardbibliotheken wie z.B. stdio.h zu verwenden. Aber werden diese Funktionen bem kompilieren mit z.B. gcc in das fertige, ausführbare Programm einkompiliert also das das Programm selber diese nicht mehr aus externalen Dateien öffnen muss oder wie ist das?

    Weil wenn ich das Programm weitergebe und der PC des "types" der es bekommt hat diese Funktion nicht zurverfügung, kann es dann trotzdem noch geöffnet werden?


    Ja. Wenn man davon absieht das stdio.h meines Wissens nach keine ISO Standardbibliothek von C++ ist, oder liege ich da falsch?
    Wofür gibt's iostream, fstream und Co?
  5. sarah93 schrieb:
    Nein, denke ich nicht, dass erscheint mir sehr unrealistisch!

    Gruß


    Was erscheint dir jetzt unrealistisch?
    Das es eincompiliert wird, oder dass studio.h zur Standartbibliothek gehört?
    Eincompiliert wird es auf jeden Fall, so wie die Präprozessor-direktive #include es immer tut. Da gibt's keinen Unterschied. :)
    Um das ganze nochmal zusammenzu fassedn.
  6. Also include und Bibliotheken sind ja zwei verschiedene Sachen.
    Im Normalfall bindest du über die Include Anweisung ja nur die Deklarationen ein, damit dein Compiler nicht meckert.
    Die Bibo-Funktionalität ist im Normalfall schon ein einer Binärdatei gespeichert und wird dann vom Linker mit dazugebunden. In sofern ist natürlich klar, dass stdio und co mit eingebunden werden. Fraglicher ist das bei dynamischen Bibliotheken, wie sie Beispielsweise die Windoof DLLs darstellen. Man kann sie unter umständen mit einkompilieren aber im Normalfall werden sie weggelassen und die Funktionalität später beim ausführen durch das Betriebssystem bereitgestellt.
  7. sektor schrieb:
    Also include und Bibliotheken sind ja zwei verschiedene Sachen.
    Im Normalfall bindest du über die Include Anweisung ja nur die Deklarationen ein, damit dein Compiler nicht meckert.
    Die Bibo-Funktionalität ist im Normalfall schon ein einer Binärdatei gespeichert und wird dann vom Linker mit dazugebunden. In sofern ist natürlich klar, dass stdio und co mit eingebunden werden. Fraglicher ist das bei dynamischen Bibliotheken, wie sie Beispielsweise die Windoof DLLs darstellen. Man kann sie unter umständen mit einkompilieren aber im Normalfall werden sie weggelassen und die Funktionalität später beim ausführen durch das Betriebssystem bereitgestellt.


    Ich denke mal, letzteres ist aber auch stark Compiler-abhängig. Natürlich würde XCode keine Windows-Bibliothek binden (bzw. es wäre vollkommen sinnlos), aber ich denke das z.B. CodeBlocks damit anders umgeht als Visual Studio. :)
  8. krisi12345 schrieb: Es ist ja kaum möglich C Programme zu schreiben ohne Funktionen aus den Standardbibliotheken wie z.B. stdio.h zu verwenden. Aber werden diese Funktionen bem kompilieren mit z.B. gcc in das fertige, ausführbare Programm einkompiliert also das das Programm selber diese nicht mehr aus externalen Dateien öffnen muss oder wie ist das?

    Weil wenn ich das Programm weitergebe und der PC des "types" der es bekommt hat diese Funktion nicht zurverfügung, kann es dann trotzdem noch geöffnet werden?


    Die Bibliotheken müssen nur auf dem System installiert sein, auf dem die Kompilierung vorgenommen wird. Als Ergebnis erhält man die Exe-Datei, in die die Funktionen "hineinkompiliert" werden. Die Exe ist dann ohne weiteres direkt ausführbar.

    Jedoch kann es sein, dass du noch weitere Dateien mitgeben musst, damit das Programm richtig funktioniert. Ich habe mal mit einem VGA-Grafikmodus in C gearbeitet (640x480 Pixel bei 16 Farben). Da muss man eine Datei namens egavga.bgi verwenden, um den Grafikmodus initialisieren und verwenden zu können.

    Viele Grüße
    tangoal

  9. b**x

    Das kommt drauf an, ob du die Bibs über den Linker statisch oder dynamisch einbindest. Im statischen Fall hast du dann alles in deinem Programm enthalten, im dynamischen Fall (der auch der häufigere ist) müssen die Bibliotheken zur Laufzeit auf dem Zielsystem existieren.
  10. bbox schrieb:
    Das kommt drauf an, ob du die Bibs über den Linker statisch oder dynamisch einbindest. Im statischen Fall hast du dann alles in deinem Programm enthalten, im dynamischen Fall (der auch der häufigere ist) müssen die Bibliotheken zur Laufzeit auf dem Zielsystem existieren.


    Das erlebst du auch in Qt. :) Wenn du standartmäßig mit Qt (auf Windows(!)) programmierst, musst du ~3 Bibliotheken mitgeben - sofern ich es nicht statisch compiliere. Das ist z.B. auf Mac OS (Lang lebe Mac OS) nicht der Fall. Da ist alles drin. :)
  11. Wenn du noch DLL's verwendest, dann solltest du diese statisch in deine Exe linken, sonst musst du die immer mit deinem Programm mitliefern. Aber unter C weiß ich ehrlich gesagt nicht, ob man statisch oder dynamisch linken kann. Kenn ich eher von C++ Kompilern...

    Beitrag zuletzt geändert: 9.8.2010 22:08:32 von tangoal
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!