I dag har de fleste systemer i x86 verdenen en ordstørrelse på 64 bit. Ordstørrelsen er et antall bit som kan brukes samtidig på den mest effektive måten. Tidligere arkitekturer av x86 prosessorer hadde en ordstørrelse på 32 bit, noe som betyr at de har en annen forståelse av hva som er den beste justeringen av data i minnet, samt at de har en annen mekanisme for å adressere en annen størrelse på minnet. Selv instruksjonssettet til 64-bits prosessorer er ganske likt instruksjonene til 32-bits prosessorer. Binærfiler (objekter kompilert til maskinkode) kan ikke kjøres direkte på 64-bits systemer.
Multilib er en mekanisme for å gi støtte til 32-biters binærfiler slik at de kan kjøres av moderne 64-biters CPUer.
Fra et pedagogisk synspunkt er LFS i sin «native» form sannsynligvis den beste måten å se hvordan et Linux-system bygges fra kildekode. Det er ingen grunn til å forveksle med forskjellige arkitekturer. Men når det er behov for å kjøre 32 binærfiler og du ikke vil bygge hele systemet i 32-bit (noe som ville være sløsing med ressurser nå for tiden), er LFS-multilib et alternativ. Eksempler på et slikt behov kan være
Lukket kildekode-programvare uten kildekode kun tilgjengelig for 32-bit. Det kan være tilfelle for skriverdrivere eller andre typer maskinvaredrivere, selskapet tilbyr binærfilene. Hvis du har en slik driver, kan LFS-multilib hjelpe deg med å få det til å virke.
Hvis du vil gå langt utover LFS og sette opp en virtualiseringsplattform som VirtualBox, vil du trenge støtte for multilib
eller bare fordi du kan
Multilib utgaven av LFS går et lite skritt videre og et lite skritt tilbake til det som ble sagt i forrige avsnitt når vi snakket om målarkitekturer. På den ene siden er multilib utgaven fokusert og begrenset til bare x86_64 arkitekturer, derimot, det utvider instruksjonene for å bruke begge mulige arkitekturer, nemlig 32-bit så vel som 64-bit.
Den går også litt utover den grunnleggende pedagogiske tilnærmingen til LFS, som er å vise deg hvordan du bygger et Linux system. For å oppnå dette kreves det ingen støtte for flere arkitekturer enn standardarkitekturen for systemet ditt. Hvis du ikke har bygget et system tidligere ved hjelp av standard LFS boken, oppfordres du til å gjøre det før du bruker denne utgaven..
Å bygge et multilib-system er ikke så mye forskjellig fra å bygge et system ved å bruke 'standard' LFS boken. Bortsett fra noen justeringer her og der, er den mest fremtredende forskjellen at et multilib system krever kompilering av noen applikasjoner opptil tre ganger: én for den primære 64-bitsarkitekturen, én for 32-bitsarkitekturen (m32), og igjen for 32-bitsarkitekturen med 32-bits minne tilgang og 64-bits instruksjonssett (mx32).
Fortsett bare hvis du og systemet ditt oppfyller følgende krav:
du har en x86_64 kompatibel maskin
Hvis du har tilgang til kjernekonfigurasjonen for systemet
ditt, må du ha CONFIG_IA32_EMULATION=y
satt
for å bygge for m32
og CONFIG_X86_X32_ABI=y
satt for
å bygge for mx32
.
Hvis du ikke har tilgang til kjernekonfigurasjonen for systemet ditt, kan du kanskje teste kompatibiliteten ved å kjøre følgende kommandoer:
echo 'int main(){}' > dummy.c gcc -m32 dummy.c ./a.out gcc -mx32 dummy.c ./a.out
Hvis en av ./a.out kommandoene resulterer i en "Exec format error" melding, så har du ikke en systemkjerne som er i stand til å bygge for den arkitekturen i LFS, og derfor bør du sannsynligvis prøve å bygge et LFS system uten Multilib, men med de nødvendige kjernefunksjonene, og bruke det til å bygge et Multilib system.
du har allerede noe erfaring med LFS
du trenger 32-bits støtte
Hvis du bestod alle tre kravene, kan du bygge LFS i multilib-modus..