v. Om Multilib Utgaven

Hva er Multilib

I dag er de fleste x86 systemer 64-bit. Før 64-bit kom 32-bit, og før det kom 16-bit. Disse bitstørrelsene er de som CPU-en kan jobbe med mest effektivt. Et resultat av dette er at CPU registrene har endret størrelser, tildelinger osv., sammen med ulik datajustering. En annen konsekvens er at programvare skrevet eller bygget for en bitstørrelse kan mislykkes i å fungere på en annen. For å sikre at en tidligere bitstørrelse kan kjøre på en CPU med en nyere bitstørrelse, kan CPU-en ved hjelp av kjernen emulere programvare som retter seg mot den forrige bitstørrelsen.

Dette er imidlertid ikke helt nok til å bygge bro over uforeneligheter med bitstørrelser. De fleste kompilerte programvarer har avhengigheter som kommer fra systemet, som standard C-biblioteket. Når programvare med en annen bitstørrelse ber om disse avhengighetene, vil den at de skal ha samme bitstørrelse som programvaren i stedet for CPU-ene.

Multilib bygger bro over det store gapet, og gir disse avhengighetene for programvarens bitstørrelse, samtidig som den tilbyr en hovedsakelig 64-biters opplevelse.

Denne boken inneholder 32-bits (i?86) avhengigheter og verktøykjeder beregnet for 64-bits x86 (x86_64/AMD64) systemer.

Hvordan MLFS aktiverer Multilib

[Viktig]

Viktig

MLFS er en variant av LFS og installerer et helt nytt LFS system. Det antas at du installerer et nytt system og ikke gjenoppbygger verktøykjeden for å inkludere støtte for flere biblioteker. Selv om det er mulig å inkludere støtte i etterkant med en spesifikk prosess, er det ikke anbefalt ennå.

LFS booter seg selv fra en annen Linux-distribusjon. For å gjøre dette kompileres hver pakke fra kildekoden og installeres, ofte i flere etapper. I den enden gjør MLFS det samme for avhengighetene. Imidlertid resulterer forsøk på å bygge en applikasjon eller et bibliotek med en annen bitstørrelse på et standard vanilla LFS system i at nødvendige biblioteker for denne prosessen ikke kan bli funnet og koblet mot eller til. Verktøykjedene som er på plass må få den støtten.

MLFS' oppgave er å utruste systemet med verktøykjeder som kan målrette 32-bit, deretter gi grunnleggende avhengigheter som tillater 32-bits kompilering og utførelse av pakker innenfor og utenfor basis LFS.

Formålet med et Multilib system

LFS blir i dag behandlet som pedagogisk materiale man kan lære av, og i mindre grad som å bruke det produserte resultatet i hverdagen. Å installere støtte for forskjellige bitstørrelser gir mer nytte og gjør den første LFS installasjonsopplevelsen mer forvirrende. Det anbefales å ha installert LFS før du installerer MLFS. Hvis du velger å installere vanlig LFS, kan du imidlertid støte på situasjoner der det er ganske fordelaktig å ha et flerbibliotekssystem. Følgende er en ikke-uttømmende liste over grunner til å gjøre det:

  • Lukket kildekode programvare finnes kun for 32-bit. Det kan være tilfelle for enkelte drivere eller noe skrivebordsprogramvare.

  • Sette opp virtualisering for et system med en annen bitstørrelse.

  • Å lære det grunnleggende om hvordan multilib virker.

Bygge et Multilib system

Tidligere ble det nevnt at MLFS gjør det samme som LFS, som er å boote systemet fra en annen Linux distribusjon. Samtidig ble det nevnt at en kompilator uten støtte for andre bitstørrelser innebygd vil mislykkes i å bygge noe for den bitstørrelsen. Dette betyr at for å bygge en kompilator med støtte for andre bitstørrelser (32-bit). Trenger du at systemet du bootstrapper fra har den støtten innebygd i verktøykjeden og må ha avhengighetene som kreves av den.

Over tid fant brukere av MLFS ut at det beste mediet for dette formålet er Gentoo CD. Det er personlig preferanse om du vil bruke den minimale installasjons CD-en, LiveGUI USB bildet eller QCOW2 bildet. LiveGUI USB bildet er svært brukervennlig, bruker KDE Plasma som skrivebordsmiljø og har nettlesere til bruk. CD-ene tilbyr 32-bits støtte på AMD64 (x86_64). Hvis du allerede har bygget et MLFS system, tilbyr MLFS et godt grunnlag for oppstart også.

Å bygge et multilib system er ikke så mye forskjellig fra å bygge et system ved hjelp av den vanlige LFS boken. I tillegg til å innlemme endringer som tillater multilib støtte i noen pakker eller verktøykjeder, krever den totale prosessen at noen pakker kompileres et par ganger:

  1. For 64-bit (kan tilby programmer, libraries, deklarasjonsfiler, Pkg-config filer, og ressurser)

  2. For 32-bit (installerer vanligvis bare biblioteker, svært sjelden arkitekturspesifikke deklarasjonsfiler og arkitekturspesifikke pakkekonfigurasjonsfiler)

Fortsett hvis systemet ditt oppfyller følgende krav:

  • Du har et x86_64/AMD64 system med et x86_64/AMD64 operativsystem.

  • Kunne kjøre 32-bit programvare. Sjekk kompatibiliteten ved å kjøre følgende kommandoer:

    echo 'int main(){}' > dummy.c
    gcc -m32 dummy.c
    ./a.out
    rm -vf dummy.c a.out

    Hvis kommandoene ovenfor resulterer i «Exec format» eller kompilatorfeil, har du ikke en systemkjerne og/eller verktøykjede som er i stand til å bygge eller kjøre 32-biters programvare. Prøv deretter å bruke en annen distribusjon eller installasjonsmedium.

Hvis du har bestått arkitekturkravene ovenfor, kan du bygge MLFS.