Multilib
Vorlage:Hinweisbaustein Multilib, kurz für multiple libraries, oder Multilib-Umgebung bezeichnet eine spezielle Konfiguration eines Betriebssystems, mit deren Hilfe Programme für meist zwei eng verwandte Rechnerarchitekturen auf einem Computer ausgeführt werden können,<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> ohne den Einsatz spezieller Software wie etwa einer virtuellen Maschine. Eine Grundvoraussetzung dafür ist, dass die Hardware zu beiden Befehlssatzarchitekturen kompatibel ist. Das bekannteste Beispiel für diese Kompatibilität ist die x64-Mikroarchitektur (AMD64, x86-64), die abwärtskompatibel zur 32-Bit-x86-Architektur IA-32 ist. Diese wiederum ist abwärtskompatibel zur 16-Bit-x86-Architektur (x86).
Der Begriff wird häufig in Verbindung mit Linux und Open Source verwendet.
Eine Multilib-Umgebung ist in der Regel ressourcenschonender als eine virtuelle Maschine realisierbar. Dafür bietet die virtuelle Maschine, da sie vollständig in Software implementiert werden kann, die Möglichkeit, auf einem Computer Rechnerarchitekturen darzustellen, die zur vorhandenen Hardware inkompatibel sind.
Verwendung[Bearbeiten]
Linux[Bearbeiten]
Auf Linux-Distributionen, die für den Einsatz auf einer x64-Architektur bestimmt sind, ist Multilib ein möglicher Weg für Binärkompatibilität. Um sowohl 64-Bit- als auch 32-Bit-Programme, die für eine IA-32-Architektur vorgesehen sind, verwenden zu können, werden neben den 64-Bit-Programmbibliotheken für die 64-Bit-Programme auch 32-Bit-Bibliotheken für die 32-Bit-Programme benötigt. Bei der Einrichtung der Multilib-Umgebung und bei der Installation der 32-Bit-Programme muss dafür gesorgt werden, dass bei deren Installation keine 64-Bit-Komponenten überschrieben werden, was jedoch im Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (kurz: FHS) geregelt ist.<ref>LSB Workgroup: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. The Linux Foundation, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Danach landen 32-Bit-Bibliotheken in /lib32 und /usr/lib32, 64-Bit-Bibliotheken in /lib64 und /usr/lib64. Dies ist jedoch optional, sodass die nativen Bibliotheken eventuell in /lib und /usr/lib gespeichert werden.
Da allerdings einige bereits existierende 32-Bit-Programme auf der x86-Architektur die Programmbibliotheken in /lib und /usr/lib erwarten, setzen einige Linux-Distributionen entweder einen symbolischen Link von /lib32 bzw. /usr/lib32 darauf, oder verwenden gleich /lib und /usr/lib für die 32-Bit-Bibliotheken (und /lib64 sowie /usr/lib64 für die nativen x64-Bibliotheken).<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Android[Bearbeiten]
Auf Android wird Multilib ebenfalls für die Bereitstellung von Apps, die auf 32-Bit und 64-Bit gleichermaßen funktionieren, verwendet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Toolchain[Bearbeiten]
Für Entwickler bedeutet Multilib die Verwendung einer entsprechenden Toolchain, die einen Compiler, der Multilib unterstützt, nutzt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Prominente Beispiele sind etwa GCC oder LLVM.
Abgrenzung[Bearbeiten]
Multilib stützt sich zwar bei der Toolchain auf bereits bestehende Konzepte von Multiarch, setzt im Unterschied dazu jedoch die gleiche Befehlssatzarchitektur (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., kurz ISA) voraus.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Das Resultat ist Binärcode, der auf nur einer Architektur lauffähig ist. Das Betriebssystem stellt dann die jeweils richtigen Programmbibliotheken bereit, damit die ausführbare Datei funktioniert.
Multiarch hingegen bedeutet, dass ein Programm für eine andere Befehlssatzarchitektur kompiliert wird (Cross-Compiler). Jedoch wurde auch Multilib anfangs als MultiArch bezeichnet, etwa unter Ubuntu.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Eine ausführbare Datei (ein Programm), das auf mehr als einer Befehlssatzarchitektur lauffähig ist, weil die Binärdatei selbst den jeweiligen, bereits kompilierten Code dafür enthält, heißt Fat Binary oder, bei macOS von Apple, Universal Binary.
Siehe auch[Bearbeiten]
- WOW64, eine vergleichbare Technik unter Windows
Weblinks[Bearbeiten]
- Slackware Documentation Project: Adding Multilib Capability to Slackware on x86_64 Architecture (englisch)
- Gentoo Wiki: Multilib (englisch)
Einzelnachweise[Bearbeiten]
<references />