PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundsatzfragen



11-05-2000, 16:03
Hallo zusammen,

ich versuche gerade mir c++ anhand des
Buches von Stoustroup im Selbststudium an-
zueignen und bin beim Lesen jetzt auf
einige grundsätzliche Fragen gestoßen.
Vielleicht kann mir die jemand beantworten?

1.) Ist die Gesamtheit der Headerdateien
und Bibliotheken synonym zu verwenden?
Sprich sind in den Bibliotheken neben
Headerdateien noch andere Dateien enthalten
und wenn ja welche?

2.) Handelt es sich bei Softwarepaketen
für Linux bei sogenannten Binaries dann
um compalierte Dateien, sind die damit
vergleichbar wenn ich ein kleines Programm
schreibe und das compaliere, kann man das
also auch als Binary titulieren?

3.) Kann ich compalierte Programme auf
beliebigen Unixbasierten Systemen laufen
lassen?

4.) Ist c++ wirklich auf c aufgesetzt und
könnte ich dann ein c-Programm auch mit
einem c++ Compiler compalieren um ein
funktionierendes Programm zu erhalten?

Sorry, wenn ich vielleicht ein wenig dumm
Frage aber ich studiere neben meiner Arbeit
auch ein wenig Informatik in den Anfängen
und auch in einem Fach wie "Konzepte im-
perativer Programmierung" wird sowas nicht
erklärt!

Vielleicht gibt es für derartige Fragen
ja auch ne FAQ, wenn ja würde mich inter-
essieren wo?

Gruß und Danke für Eure Mühe

Stefan

------------------
****************************
Dipl.-Ing.(FH) Forstwirtschaft
Stefan Feeser

EMail feeser@feeser.ab.uunet.de
*************************

11-05-2000, 17:19
Hi!!!
also, erstmal der standart spruch: dumme fragen gibt's nicht, höchstens dumme antworten. möglicherweise zählen meine darunter, deshalb bitte ich gegebenenfalls um berichtigung, bzw. um vertiefung http://www.linuxinfoserver.de/ubb/smile.gif.
zu 1.: weiß ich nicht so ganz was du meinst, sorry http://www.linuxinfoserver.de/ubb/smile.gif.
Binaries sind compilierte Programme. also ausführbar. und ein selbstgeschriebenes und compiliertes Programm ist also auch ne binary.
zu 3.:
also, erstmal muß das ganze natürlich unter nem unix-basierenden system (z.B. Linux http://www.linuxinfoserver.de/ubb/smile.gif) compiliert worden sein. rein theoretisch ist das Programm auf unixbassierenden systemen jetzt ohne weiteres einsetzbar, praktisch klappt das aber meißtens nicht. die systeme unterscheiden sich teilweise ja in der Lage der libs und noch in vielem anderen systemspezifischeren dingen. sogar bei verschiedenen Linuxdistributionen KANN es zu schwierigkeiten kommen. aber es ist auf jeden fall besser, egal welche UNIX-Variante (SuSE Linux, RedHat Linux, Solaris...) man hat, den Quellcode immer für das vorliegende System nochmal's extra zu compilieren. so ist das programm am besten an das jeweilige system angepasst.
Im großen und ganzen ist die antwort also nein.
zu 4.: C++ setzt komplett auf C auf, soll heißen, du kannst beliebige C Programme mit nem C++ compiler compilieren, umgekehrt natürlich nicht. in C++ steckt der gesamte C Syntax drin, er beinhaltet eben noch erweiterungen. trotzdem sollte man C++ nicht als einfaches Update zu C sehen, dazu unterscheiden sich die beiden nun doch wieder zu stark.

hoffe das hilft dir wenigstens ein bisschen...

cu
Peter

StefanS
12-05-2000, 08:49
Hallo Stefan !

Zu Punkt 1 : Headerdateien und Bibliotheken (Librarys) sind nicht gleichzusetzen ! Eine Bibliothek enthält zusätzliche Funktionen (in Form einer sog. Objektdatei, .o ), die zugehörige Headerdatei ( .h) enthält nur die Funktionsprototypen, damit der Compiler (nicht Compaler http://www.linuxinfoserver.de/ubb/wink.gif ) weiß, wie diese aufzurufen sind.
Z.B. kann in einer Headerdatei die Funktion <tt>int zufallszahl()</tt> deklariert werden (der Compiler weiß nun: keine Argumente, liefert eine Ganzzahl zurück), der eigendliche Programmcode aber, der die Zufallszahl erzeugt, steckt bereits in compilierter Form in einer Objektdatei.
Ganz wichtig: diese Funktionsbibliotheken, die zum Compiler gehören sind nicht zu verwechseln mit dynamisch ladbaren Programmbibliotheken, die in /lib installiert werden !!!

zu 2 : Binarys sind Binärdateien, also alles was Programmcode in Maschinenverständlicher Form enthält, darunter falle alle ausführbaren Dateien, aber auch oben erwähnte Objektdateien, dynamische Librarys ( .so) ...
Unter besagten binary-Softwarepaketen versteht man bereits compilierte Programme, die der Anwender nur noch entpacken muss.

zu 4 : ja ! http://www.linuxinfoserver.de/ubb/smile.gif

Auf wiedertschüss, StefanS

12-05-2000, 08:58
Hallo Peter,

für Deine Hilfe schon mal vielen Dank,
manches ist mir jetzt klarer!

Zu 1.) Habe mich wohl wieder mal ein
wenig zu kompliziert ausgedrückt! Also ein
neuer Versuch.

Egal ob bei c oder bei c++ werden doch
am Programmanfang mittels "include" sogen-
annte Headerdateien eingebunden, die wenn
ich es richtig verstanden habe zum einen
globale Variablen zur Verfügung stellen
und zum anderen "die Schnittstelle" etwa
zur Standarteingabe oder Standartausgabe
bereitstellen. Was die Teile sonst noch
so machen kommt wohl im Buch weiter hinten,
interessiert mich aber auch.

Wenn ich nun einen Compiler nutzen will muß
ich doch auch das passende Bibliotheken-
paket installieren. Sind in diesem Paket,
sprich in den Bibliotheken nur Headerdateien
vorhanden, was ich mir aber nicht so richtig
vorstellen kann, oder aber auch andere
Dateien. Wenn noch andere Dateien in den
Bibliotheken enthalten sind würde mich
interessieren welche das sind und was die
bezwecken.

Auch würde mich interessieren wie die
Struktur der Pfade beim Compiler ist, d. h.
unter welchem Pfad was zu finden ist? Ich
meine ich weiß zwar inzwischen das die
Programme i . d. R. unter /usr liegen und
die Bibliotheken, meines Wissens unter
/usr/lib aber da gibt es ja noch so viele
andere Pfade...?

Du siehst Fragen über Fragen - ich hoffe
Du oder ein anderer weiß Rat!

Ciao

Stefan

------------------
****************************
Dipl.-Ing.(FH) Forstwirtschaft
Stefan Feeser

EMail feeser@feeser.ab.uunet.de
*************************

12-05-2000, 16:34
Hi Stefan!!!
ahso, dann ist klar. da haste eben was falsch verstanden. aber StefanS hat das ja schon erklärt. habt euch beim schreiben anscheinend zeitmäßig überschritten, so daß du sein posting noch nicht geleses hast.
ich erklärt's mal nochmal, so gut ich kann.
Headerdateien beinhalten eben meißtens nur Deklarationen. dadurch weiß der compiler was einer funktion übergeben werden muß, wenn sie aufgerufen wird, und kann dich drauf aufmerksam machen, falls du mal im eigentlich code deines Programms was falls aufrufst http://www.linuxinfoserver.de/ubb/smile.gif. so läßt sich's relatib gut beschreiben. und die ufnktion selbst steht in ner Library.
der unterschied läßt sich auch relativ schnell merken, wenn du mal ne library und ne Headerdatei in nem Texteditor öffnest. das was in der Headerdatei steht solltest du mit deine C/C++ kenntnissen mehr oder minder gut verstehen, bei der Library wirts da schon schwerer ^_^.
also, Headerdateien beinhalten immer normalen C/C++ Code. im grunde könnte man die sachen aus der headerdatei auch in den eigentlichen Source schreiben, aber das wäre zu unübersichtlich, unpraktisch und letztendlich zu kompliziert. so ist alles schön geordnet.

zu den Pfaden. also, normaleerweise sind unter /usr eher keine Programme http://www.linuxinfoserver.de/ubb/smile.gif. wo die sich befinden hängt immer von dem system und dem anwender und so ab. soche Verzeichnissse sind z.B. /usr/bin /usr/X11/bin und noch viele andere verzeichnisse. das bin steht dabei eben für binär, also ausführbar. also, wenn du irgendein programm suchst, immer erstmal in nem bin verzeichniss nachsehen http://www.linuxinfoserver.de/ubb/smile.gif.
unter /usr/lib liegen dann meißtens die Librarys. die haben alle ein 'lib' vorne dran stehen. und unter /usr/include finden sich dann schließlich noch die include dateien, also die Headerfiles, die du bei deinem Source mit #include einleitest.

OK. hoffe das hift dir ein wenig. wenn du noch fragen hast -> posten
bis denne...

cu
Peter

13-05-2000, 15:31
Hallo zusammen,

vielen Dank für Eure Mühe, mir ist jetzt vieles klarer! Hoffentlich kann ich mich
nach weiterem Lesen/Rumbasteln http://www.linuxinfoserver.de/ubb/smile.gif mal revan-
chieren.

Gruß

Stefan