Linux 15.027 Themen, 107.036 Beiträge

Was ist das denn mit den Libs ?

Anne Radtke / 3 Antworten / Baumansicht Nickles

Wie ist das da eigentlich, wenn Linux meckert, das Libxyz fehlen, dann kann man die Installation wohl vergessen, oder ? Und warum ist das Zeugs eigentlich nicht gleich mit dabei im Installationspaket ?

bei Antwort benachrichtigen
polytaen Anne Radtke „Was ist das denn mit den Libs ?“
Optionen

Hallo Anne,
nein, die Installation kannst Du nicht vergessen. Alles was man tun muss, ist die libxyz zu installieren (apt-get, yast2, .tgz, src). Muss man sich dann entweder runterladen, oder von den Inastallationscds. Nach der Installation kann man dann problemlos das Programm installieren (hast Du da was konkretes =)?).

Nun, warum ist das nicht gleich dabei? Weil Die Datei dann viel zu größ würde zum runterladen und die meisten Leute die benötigten libs eh schon installiert haben. Die, die sie nicht haben sollten sich die lib halt installieren. Die Gemeinde ist halt bemüht alles so klein wie möglich zu halten, damit die Netzlast nicht immer höher wird, und die user nicht so viel bezahlen müssen. Bsp: es gibt Programme, die halt 200kB haben, aber auf eine 20Mb lib zugreifen. Das würde nicht rechtfertigen, die lib mitreinzupacken.

Ausserdem gibt es auch Programme, die die libs mibringen, die sogenannte "statically linked" programme (Opera z.B. kann man statisch gelinkt, oder dynamisch gelinkt runterladen). IN diesen statically linked-Versionen sind die Bibliotheken (libs), die Opera verwendet miteinkompiliert. Dadurch wird allerdings der download Doppelt so groß (von 2,3Mb auf 4,7 Mb oder so). Hier kann es sich dann lohnen den statically linked zu verwenden, wenn man sich die Bibs nicht runterladen möchte, denn 50% mehr Daten sind ok. in obigem Beispiel (200kB vs 20 Mb sin das halt locker 10000%)

Ausserdem spart es platz und Arbeitsspeicher und Rechenleistung, wenn man die Bibs gesondert runterlädt (für dynamically linked Programme). Bsp: "ls" und "find" benutzen die gleiche Bibliothek, sind aber beides recht kleine Programme. Wenn man ls ausführt, werden die entsprechenden Bibliotheken in den Arbeitsspeicher geladen. Benutzt man danach irgendwann find, muss die Bibliothek nicht nochmal neu geladen werden, find erkennt, das sie schon im Arbeitsspeicher liegt. D.h. also, die Bibliothek kann von mehreren Programmen dynamisch genutzt werden und wird kein 2. Mal in den Arbeitsspeicher geladen.
Nimm nun einmal an, ls und find würden alle Bibliotheken beinhalten, die sie zum Arbeiten brauchen. 1.) wären dann die Programme um ein vielfaches größer und 2.) würde die doppelte Menge an Arbeitsspeicher verbraucht werden, weil jedes Programm seine "eigenen" Bibliotheken in den Arbeitsspeicher laden will.

Das ist also der unterschied zwischen "statisch" (= im Packet enthaltenen) und dynamisch (=einaml im System vorhandenen) verlinkten Bibliotheken.

Warum ist dann die lib nicht als solche im Packet enthalten, zum installieren? Weil die Programmierer erstans das Packet klein halten wollen zum runterladen und zweitens weil die Leute meisten sowieso dei Bibliothek irgendwo daheim rumfahren haben (Installations-CD, Rechner o.ä).

HTH
Bis denne
poly

-      .---.        .----------     /     \  __  /     ------    / /     \(  )/    -----   //////   ' \/ `   ---  //// / // :    : --- // /   /  /`    '--//          //..\\       ====MM====MM====           '//||\\`
bei Antwort benachrichtigen
Anne Radtke polytaen „Hallo Anne, nein, die Installation kannst Du nicht vergessen. Alles was man tun...“
Optionen

ok danke für die Tipps. Ich selber hab derzeit keine Probleme, ein Bekannter plagt sich aber gerade mit LICQ ab und da fehlen die Teile.

bei Antwort benachrichtigen
polytaen Anne Radtke „ok danke für die Tipps. Ich selber hab derzeit keine Probleme, ein Bekannter...“
Optionen

Gerne geschehen :)
Bis denne
poly

-      .---.        .----------     /     \  __  /     ------    / /     \(  )/    -----   //////   ' \/ `   ---  //// / // :    : --- // /   /  /`    '--//          //..\\       ====MM====MM====           '//||\\`
bei Antwort benachrichtigen