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-biters (i?86) og x32-biters avhengigheter og verktøykjeder beregnet for 64-biters x86 (x86_64) 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 og/eller x32-bit, og deretter sørge for grunnleggende avhengigheter som tillater at 32-bit/x32-bit kompileringer av pakker utenfor LFS lykkes og fungerer som forventet.

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 det daglige. Å installere støtte for forskjellige bitstørrelser gir mere og gjør den første LFS installasjonsopplevelsen mer forvirrende. Det anbefales å ha installert LFS før du installerer MLFS. Men hvis du velger å gjøre det siste, kan du 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 settes opp.

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 og x32-bit), må systemet du booter fra ha den støtten innebygd i kompilatorene og må ha avhengighetene som følger med dem.

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, og bruker KDE som skrivebordsmiljø og har nettlesere for å bruke. CD-ene tilbyr støtte for 32-bit og x32-bit i tillegg til 64-bit. Hvis du allerede har bygget et MLFS system, tilbyr MLFS et godt grunnlag for å starte opp fra 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 flere ganger:

  1. For 64-bit (kan tilby både programmer, biblioteker og data)

  2. For 32-bit (installerer vanligvis bare biblioteker)

Fortsett hvis systemet ditt oppfyller følgende krav:

  • Du har et x86_64-system.

  • Kunne kjøre 32-bit/x32-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 for en eller alle arkitekturene ovenfor i LFS. På det tidspunktet kan du prøve å bruke en annen distribusjon eller installasjonsmedium.

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