.dll-Äquivalent beim Mac?

McOdysseus

McOdysseus

Aktives Mitglied
Thread Starter
Dabei seit
31.12.2003
Beiträge
6.016
Reaktionspunkte
977
Hallo zusammen!

Ich gebe offen zu: Ich bin ein Informatik-Nerd!
Da ich über die Suche keine Antwort gefunden habe (obwohl ich sicher bin, daß diese oder eine ähnliche Frage hier schon gestelllt wurde…), wäre es nett, wenn mir jemand erklären könnte, was der Zweck von 'dynamic libraries' bei Windows-basierten Rechnern sind (Wirklich nur das Zugreifen verschiedener Anwendungen auf gemeinsam verwendete Daten?) und durch was Selbige bei Apple-Rechnern funktional 'ersetzt' werden.

Bitte bedenkt, daß meinem technischen Verständnis enge Grenzen gesetzt sind! ;)

Danke für eure Mühen!
McO
 
das nahe liegende .dylib übersehen? ,)

dynamisch heisst halt, dass du zur laufzeit dazu gelinkt werden, im gegensatz zu static libraries, die beim kompilieren gelinkt werden...
 
McOdysseus schrieb:
Bitte bedenkt, daß meinem technischen Verständnis enge Grenzen gesetzt sind! ;)

Danke für eure Mühen!
McO
dann bist du kein nerd sondern ein n00b ;)
 
In der Tat hab ich das Übersehen, aber in diesem Themenbereich bewege ich mich ohnehin wie ein Blinder mit Sonnenbrille bei Neumond.

Weißt du vielleicht eine Stelle, an der ich über das Thema etwas (in verständlicher Sprache) nachlesen kann?

Danke
McO
 
McOdysseus schrieb:
Weißt du vielleicht eine Stelle, an der ich über das Thema etwas (in verständlicher Sprache) nachlesen kann?

Es gibt einen recht guten Wikipedia-Artikel. Der ist zwar Windows-Spezifisch, aber die dylibs von MacOS X funktionieren sehr ähnlich.

Gremlin
 
Den Wikipedia-Artikel hatte ich auch schon gefunden, aber der Vergleich zum Mac fehlte mir halt…

Trotzdem danke für den Hinweis!
 
@McO: 2te Webseite von rechts, 4ter link von oben ;)

Grob vereinfacht verhält es sich so:

Ein Programm besteht aus

- so genanntem entry-Code, der ein Programm beim System anmelet und den Start ermöglicht.
- einer Hauptrouztine die den Gesamtablauf überwacht
- einem Haufen Objekten und/oder Prozeduren
- einem Exit-Code der ein Programm sauber beendet und Speicher freigibt

Hat man nun häufig wiederkehrende Aufgaben, so kann man den Code mehrfach benutzen und erstellt sogenannte Libraries. Diese Haben weder Entry- noch Exit-Code und verfügenn auch über keine Hauptroutine, denn das wäre ja alles überflüssig. Im Grunde sind es Sammlungen von Prozeduren oder Objekten. Daher der Name Library. Da man sich zu diesen dynamisch verbinden ( to link) kann, heißen die bei Windows DynamicLinkLibraries oder eben kurz DLL!

Bei allen (T)UNIXen enden diese Libraries nicht auf *.dll sondern *.so! Das Prinzip ist jedoch ähnlich!


Bitte nicht hauen, wenn's technisch nicht 100%ig ist, es ging McO ja um das Prinzip!
 
@wegus

also entsprechen die 'sharedobjects' den 'dynamiclinklibraries'?

na dann schiebe ich noch eine eitle (und wahrscheinlich auch naive) frage hinterher:
warum höre ich (rein subjektiv) recht häufig windows-user über .dlls fluchen, aber noch nie einen unix/mac-user über .so-dateien?
 
Das Prizip der Dynamischen Library findet sich wohl auf den meisten Betriebssystemen. Eine Library ist keineswegs nur eine Ansammlung gemeinsam genutzter Daten sondern eher eine Sammlung von subprogrammen die es erlauben, Programme modularer aufzubauen.

Wenn Programmcode compiliert wird laeuft ein linking step der externe Libraries in den Programmcode einbindet. Dann spricht man von statischen Libraries.

Eine dynamische Library steht therortisch allen Programmen zur Verfuegung und muss nicht zum Zeitpunkt des compilierens gelinkt werden. Erst wenn das Programm aufgerufen wird tritt ein "loader" auf den Plan der vom OS geteuert wird der die Library erst zur Laufzeit des Programmes laed.

Unter Mac OS X liegen die dynamischen Libraries im Verzeichnis Libraries (wo sonst) und haben den suffix .dylib. Oder sie sind in sogenannte bundels zusammengefasst die die Endung .framework haben.
 
Zuletzt bearbeitet:
Lunde hat es schon beantowrtet, die kurze Erklärung ist "Organisation ist Alles!".

Bei UNIXen ist es üblich Libs mit Versionen zu bezeichnen:

libraryabc-1.0.12.so
libraryabc-1.0.13.so
libraryabc-1.0.14.so

die jeweils aktuelle wird über einen symbolischen link adressiert der hier

libraryabc.so hieße und auf libraryabc-1.0.14.so zeigen würde. Somit erreichen die Programme immer eine Library ( wenn auch nicht immer die neueste auf jedem Rechner vorliegt, so gibt es dann die neueste auf diesem Rechner). Programmiert man nun geschickt und fragt die Version der Library ab, kann man abhängig von der Version unterschiedliche Fähigkeiten aus der Library nutzen.

Wer bei Windows ( vor allem bei alten Systemen) mal in das System32 und System-Verzeichnis guckt, findet unmgengen von DLLs. Allein schon die immense Zahl unterschiedlicher VisualBasic-Runtime-DLLs ( mit unterschiedlichem Namen), ist irre! Da braucht dann Programm XY die Runtime aus Version 6, und Programm XYZ die von VB for Applications...

im Grunde fehlt Windows da ein strengerer Formalismus. Das ist eigentlich Alles!
 
wegus schrieb:
[…]im Grunde fehlt Windows da ein strengerer Formalismus. Das ist eigentlich Alles!

Danke für die Erklärung!
Also ist es hier die gleiche Geschichte, wie fast immer beim Mac - durch die relativ geringe Verbreitung ist der Kreis der Programmierenden eingeschränkt und somit die Disziplin relativ hoch.

Bei weiterer Verbreitung ginge selbige demnach ebenso flöten, wie in der Windows-Welt… *seufz*
 
Ob das ein zulaessiger Schluss ist den du da ziehst - ich wage es zu bezweifeln :)
 
McO schrieb:
Bei weiterer Verbreitung ginge selbige demnach ebenso flöten, wie in der Windows-Welt… *seufz*

Nicht ganz! UNIX gibt so etwas durch Beschreibung des Dateisystemes vor, es gibt eben definierte Verzeichnisse für so etwas. Mac OS geht da noch weiter, soweit ich es verstehe. Denn bei Mac OS sind Programme ja keine einzige Executable-Datei sondern ein Verzeichnis das nach außen als ein Programm Auftritt. Gleiches gilt auch für Frameworks meine ich. Das müßten aber OneOeight und Andere besser wissen. Ich hab leider zu wenig Zeit um für den mac zu programmieren.
 
Trotzdem nochmal danke euch allen, ich hab nun genug 'Ansatzpunkte' und Hinweise, um mich 'weiter zu hangeln'… (Bis zum nächsten Verständnisproblem! :D)

Das ist schon viel Wert.
McO
 
gut, dann schick ich die Rechnung raus :D
 
Wegus, in deinem Falle wäre wohl ein Abo angebracht… ;)
 
Zurück
Oben Unten