Laufzeitbibliothek



  • Hallo,
    ich habe leider noch Verständnisprobleme beim Thema Laufzeitbibliotheken. Habe schon ein wenig danach gegoogelt, aber in vielen Beiträgen wird Laufzeitbibliothek als dynamische Bibliothek beschrieben, was meiner Meinung und auch laut Wikipedia falsch ist.

    Vielleicht kann mir jemand die Besonderheiten der Laufzeitbibliothek erklären und wodurch sie sich von einer normalen Bibliothek unterscheidet. Ist eine Laufzeitbibliothek etwas Compilerspezifisches??

    Danke schonmal.

    mfg mattsches



  • eine laufzeitbibliothek ist eine bibliothek, die zur laufzeit des programms angebunden wird. lustiger weise nennt man das dynamisches linken, daher auch die Dynamic Link Library. oder der UNIX-Befehl ld (Link Dynamically)



  • ja, das habe ich auch schon oft so gelesen, aber stimmt das auch wirklich? Im Wikipedia-Artikel zur Laufzeitumgebung wird explizit darauf hingewiesen, dass man Laufzeitbibliothek nicht mit einer dynamischen Bibliothek verwechseln darf:

    "Nicht verwechselt werden darf das Konzept der Laufzeitbibliothek mit dem einer normalen Programmbibliothek, wie sie von einem Anwendungsprogrammierer erstellt oder einem Dritten geliefert wird, oder einer dynamischen Bibliothek, was eine zur Laufzeit gelinkte Programmbibliothek bezeichnet."( http://de.wikipedia.org/wiki/Laufzeitbibliothek).

    Nach Durchlesen des Artikels scheint mir Laufzeitbibliothek eher etwas zu sein, dass vom Compiler bereitgestellt wird. Aber ganz klar ist mir das Ganze leider nicht.



  • Laufzeitbibliothek, besser bekannt als Runtime-Library, ist die Basis um ein Programm zum Laufen zu bekommen. Z.B. benötige ich für C-Programme die C-Runtime. In der C-Runtime sind halt alle C-Funktionen enthalten, ohne die mein C-Programm erst garnicht läuft.

    Es gibt natürlich auch eine C++-Runtime, bei MS nennt sich diese z.B. msvcp80.dll (MS Visual CPP Runtime 8.0). Die C-Runtime nennt sich msvcr80.dll.

    Wenn du eine EXE unter Windows startest, wird ja nicht gleich die main()-Funktion aufgerufen, sondern erstmal ein Runtime-Code, der dann deine main() aufruft.

    Für MinGW-Programme gibts dann halt auch eine Runtime... frage mich nicht wie die sich nennt.

    Die Runtime muß aber nicht dynamisch gelinkt werden, geht auch statisch. Wobei beim MSVC der Trend zu DLLs geht (Voreinstellung in der IDE).

    Und natürlich brauche ich auch für Java-Programme eine Runtime, nennt sich dann JRE (Java Runtime Environment). Da sind dann halt alle Sachen drin, die man zum Laufen der Java-Programme auf jeden Fall benötigt.



  • DocJunioR schrieb:

    eine laufzeitbibliothek ist eine bibliothek, die zur laufzeit des programms angebunden wird. lustiger weise nennt man das dynamisches linken, daher auch die Dynamic Link Library. oder der UNIX-Befehl ld (Link Dynamically)

    Runtime-Lib und dynamic Lib sind zwei paar Schuhe. Kann höchstens sein, das eine Runtime-Lib dynamisch gelinkt ist, muß aber nicht.



  • Bulli schrieb:

    Z.B. benötige ich für C-Programme die C-Runtime. In der C-Runtime sind halt alle C-Funktionen enthalten, ohne die mein C-Programm erst garnicht läuft.

    ^^quatsch!
    🙂



  • DocJunioR schrieb:

    oder der UNIX-Befehl ld (Link Dynamically)

    ld kommt von Link Editor 🙂



  • Danke Bulli, jetzt ist das Ganze schon verständlicher für mich. Aber in der Runtime Library sind doch auch auch einige Funktionen enthalten, die ich nicht zwingend zum Ausführen eines Programms brauche, wie etwa Lesen und Schreiben einer Datei?

    @sothis: ld steht glaube ich eher für loader?!?



  • mattsches schrieb:

    Danke Bulli, jetzt ist das Ganze schon verständlicher für mich. Aber in der Runtime Library sind doch auch auch einige Funktionen enthalten, die ich nicht zwingend zum Ausführen eines Programms brauche, wie etwa Lesen und Schreiben einer Datei?

    @sothis: ld steht glaube ich eher für loader?!?

    ja auch. den dynamischen loader ld.so darf man aber nicht mit dem linker ld verwechseln 🙂


Anmelden zum Antworten