Wie und wo legt man eine .h-Datei als Bibliothek ab?

Moderator Persönliche Seite #2293741
Lesenswert?

Du hast das Problem, dass du gar nicht weißt, was eine Bibliothek
eigentlich ist, würde ich mal sagen.

Ein Headerfile kann das Interface zu einer Bibliothek definieren,
aber eine Bibliothek ist es deshalb noch lange nicht.  Eine solche
besteht aus vorcompilierten Objektmodulen, die vom Linker bei Bedarf
(wenn eins der vom Modul definierten Symbole gelinkt werden muss)
reingezogen werden.

Inwiefern eine Bibliothek im Sinne kleiner Controller überhaupt Sinn
hat, ist eine andere Frage.  Die Quellcode-Module sind ja hier so
schnell compiliert, dass der wesentliche Vorteil einer Bibliothek,
durch die Objektmodule Compilier-Zeit zu sparen, hier kaum ins Gewicht
fällt.

Wo man die entsprechenden Dateien (Header und Bibliotheken) im
Dateisystem ablegt, dafür gibt es keinen wirklichen Standard.
Moderator Persönliche Seite #2294024
Lesenswert?

Mark Brandis schrieb:

> Naja, wenn ich mir die boost-Library teilweise so anschaue mit ihren
> .hpp Dateien... ;-)

hpp?  Auch C++-Headerdateien kann man einfach auf .h enden lassen,
aber der C++-Standard bevorzugt mittlerweile ja die endungslose
Version, und die STL ist natürlich ein ähnlich gelagerter Fall.

Ja, ich wollte noch dazu schreiben "normalerweise", hab's dann nur
sein gelassen, um die Verwirrung nicht noch größer werden zu lassen.
Auch die avr-libc hat einige Dinge, die sie komplett in Header-
Dateien abwickelt, ohne echten Bibliothekscode zusätzlich liefern
zu müssen.
Gast #2294279
Lesenswert?

Jörg Wunsch schrieb:
> ole schrieb:
>>> Ein Headerfile kann das Interface zu einer Bibliothek definieren
>> Welche gäbe es denn noch?
> Beispielsweise solche, die einfach nur Konstanten definieren, oder
> solche wie <util/setbaud.h> in der avr-libc, die Hilfsmakros für die
> Baudrateneinstellung der seriellen Schnittstelle enthält.
Ach so rum meinst du das, ich dachte es gäbe noch andere 
Interface-Varianten zu Bibliotheken, also Alternativen zu 
Header-Dateien.
#2294288
Lesenswert?

ole schrieb:
> Jörg Wunsch schrieb:
>> ole schrieb:
>>>> Ein Headerfile kann das Interface zu einer Bibliothek definieren
>>> Welche gäbe es denn noch?
>> Beispielsweise solche, die einfach nur Konstanten definieren, oder
>> solche wie <util/setbaud.h> in der avr-libc, die Hilfsmakros für die
>> Baudrateneinstellung der seriellen Schnittstelle enthält.
> Ach so rum meinst du das, ich dachte es gäbe noch andere
> Interface-Varianten zu Bibliotheken, also Alternativen zu
> Header-Dateien.

Ich denke, der springende Punkt ist eigentlich der, dass das was wir 
hier in der µC-Programmierung gerne als 'Bibliothek' bezeichnen, in 
Wirklichkeit gar keine ist.

Eine Library ist ein Sammlung vorcompilierter Funktionen, die mit einem 
Librarian in eine Bibliothek zusammengestellt werden. Anstatt dem Linker 
alle Object-Files einzeln anzugeben, wirft man ihm dann einfach die 
Libtrary vor und der Linker holt sich von dort die Funktionen raus die 
er braucht.

Was wir hier normalerweise haben, könnte man mit beiden Augen zugedrückt 
bestenfalls noch als Source Code Library bezeichnen. Aber im Regelfall 
ist es einfach nur so, dass man seine Source Code Files, vielleicht noch 
nach Themenkreisen geordnet, einfach nur in einer Verzeichnishierarchie 
seiner Wahl unterbringt und den jeweils benötigten Source Code zum 
jeweiligen Projekt hinzufügt, wo er dann in jedem einzelnen Projekt 
erneut compiliert wird. Mit einer Library, aka. Bibliothek, so wie 
dieses Wort im Rest der Programmierwelt benutzt wird, hat das aber wenig 
zu tun.
Gast #2294304
Lesenswert?

Karl Heinz Buchegger schrieb:
> ole schrieb:
>> Jörg Wunsch schrieb:
>>> ole schrieb:
>>>>> Ein Headerfile kann das Interface zu einer Bibliothek definieren
>>>> Welche gäbe es denn noch?
>>> Beispielsweise solche, die einfach nur Konstanten definieren, oder
>>> solche wie <util/setbaud.h> in der avr-libc, die Hilfsmakros für die
>>> Baudrateneinstellung der seriellen Schnittstelle enthält.
>> Ach so rum meinst du das, ich dachte es gäbe noch andere
>> Interface-Varianten zu Bibliotheken, also Alternativen zu
>> Header-Dateien.
> Ich denke, der springende Punkt ist eigentlich der, dass das was wir
> hier in der µC-Programmierung gerne als 'Bibliothek' bezeichnen, in
> Wirklichkeit gar keine ist.
Ja, wenn ich mich richtig erinnere ist Peter-Fleury-Lib auch nicht 
richtig...

Den Teil hatte ich schon richtig verstanden, nur Jörg Wunschs Kommentar 
hatte ich in dem Teil "Ein Headerfile kann das Interface zu einer 
Bibliothek definieren", da dachte ich, es gäbe noch andere Möglichkeiten 
auf eine Lib zu zugreifen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren