Forum: Compiler & IDEs Wie und wo legt man eine .h-Datei als Bibliothek ab?


von Peter (Gast)


Lesenswert?

Hallo,

ich habe das (wahrscheinlich total lächerliche) Problem, dass nirgendwo 
steht, wo man eine Bibliothek, die man grade braucht, ablegen muss. Ich 
habe AVR Studio 4 und WinAVR.

MfG Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Peter (Gast)


Lesenswert?

Ok, habs kapiert :)

Gefunden habe ich den Ordner inzwischen sowieso.

Gruß Peter

von Mark B. (markbrandis)


Lesenswert?

Jörg Wunsch schrieb:
> Ein Headerfile kann das Interface zu einer Bibliothek definieren,
> aber eine Bibliothek ist es deshalb noch lange nicht.

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter schrieb:
> Gefunden habe ich den Ordner inzwischen sowieso.

Wenn das der Ort ist, wo die mit dem Compiler mitgelieferten 
Headerdateien sind -- da gehört Deine Datei definitiv nicht hin.

von Mark B. (markbrandis)


Lesenswert?

Jörg Wunsch schrieb:
> hpp?

Jupp, die heißen da so. Warum genau weiß ich nicht, vielleicht eine 
Mischung aus .h und .cpp? Jedenfalls wird da sehr viel mit Templates 
gearbeitet.

von ole (Gast)


Lesenswert?

Libraries wäre auch mal einen Blick wert, wobei da ja die 
dynamischen Bibliotheken ausgelassen werden.

Jörg Wunsch schrieb:
> Ein Headerfile kann das Interface zu einer Bibliothek definieren
Welche gäbe es denn noch?

Jörg Wunsch schrieb:
> hpp?
hh gibt es ja auch...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von ole (Gast)


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.

von Karl H. (kbuchegg)


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.

von ole (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.