Linux From Scratch er en guide som er ment å dekke hvordan et grunnleggende Linux-system fungerer, og hvordan man installerer det aller minste (nær det aller minste, men ikke helt, siden noen pakker ikke er nødvendige etter min mening) antall pakker for å få et oppstartbart, fungerende system, klargjort for å kunne gå videre derfra og fortsette til neste guide, Beyond Linux From Scratch. BLFS dekker mange pakker for nesten alle, bortsett fra, vel, spillere og de som ikke kan bruke Linux uten Windows-programvare som kjører fint på Linux under Wine.
Så hva er alternativet for folk som dem? Å gå off-roading!
Jeg vil bemerke at det å få Steam og Wine til å fungere på LFS er to forskjellige oppgaver, men jeg anbefaler å installere de fleste pakkene (samt lib32-versjonene) som er oppført i Steam-delen hvis du gjør en multilib-installasjon (mer om det senere) hvis du har tenkt å bare installere Wine og hoppe over Steam. Noen pakker som ikke engang inkluderer multilib er fortsatt nødvendige for at Wine skal kunne kompileres, som å ha en skjermserver og ha OpenGL (enten MESA eller libglvnd). Av denne grunn vil jeg dekke Steam først, deretter Wine. Hvis du bare vil bruke Steam og være ferdig med det, kan du bare hoppe over alt som er dekket i Wine-delen. Med andre ord, når du er ferdig med Steam-delen, er du ferdig.
De fleste som følger denne veiledningen, bør bruke en x86_64 CPU som kan emulere 32-biters applikasjoner. I så fall vil Steam klage over at de ikke finner 32-biters versjonen av libc.so.6 hvis du hopper over lib32-grenene. Ikke gjør dette, og installer både 64-biters og 32-biters versjoner av pakkene jeg vil legge ut hvis du følger Steam-delen. Wine-brukere, noen applikasjoner er bare 32-biters, så jeg anbefaler å følge lib32-grenene også. Brukere som bare har en i*86 CPU, bør følge 64-biters instruksjonene, da instruksjonene for deg bare vil kompilere for i*86, i686 i de fleste tilfeller. Hvis du har problemer med å følge disse instruksjonene for din arch, anbefaler jeg å ta en titt på https://linuxfromscratch.org/blfs/view/stable og pakkene som er oppført der, som er her. De fleste, om ikke alle, pakkene her (foruten Steam, Wine og Mingw-w64-verktøykjeden) er også på BLFS.
De som har bestemt seg for, eller ikke kunne bestemme seg på grunn av arkitekturen sin og Steams krav, at de ønsker/trenger å ha støtte for multilib, vil være lurt å teste om dere har den støtten eller ikke:
echo "int main(){}" >> dummy.c
gcc -m32 dummy.c
./a.out
Utdataene fra nevnte kommando skal være:
Vel ... ingenting! Hvis det ikke er noen feil, kan du både kompilere 32-bit binærfiler som kjørbare filer og biblioteker, og også kjøre dem. I så fall kan du hoppe over denne delen og gå til delene du trenger. For de fleste vil jeg gjette at den første feilen startet da gcc -m32
ble kjørt, noe som betyr at GCC ikke har støtte for 32-bit kompilering. Følg instruksjonene for å få støtte for flere biblioteker.
Den beste ressursen for å få generell støtte for flere biblioteker er https://linuxfromscratch.org/~thomas/multilib. Dette er i hovedsak LFS-guiden, men med multilib. Personlig bygger jeg LFS med multilib-støtte i tankene. Det finnes sannsynligvis en måte å få den støtten på uten å bygge om, men jeg gjør ikke dette. Hvis du vil prøve, vær så snill. Når det gjelder guiden, har den et par problemer jeg har funnet. Jeg skal rable dem gjennom underveis.
x32 er et format som i hovedsak er 32-bit med noen av fordelene til 64-bit. De fleste skrivebordsapplikasjoner støtter ikke dette, og det er i utgangspunktet ubrukelig for Steam- og Wine-brukere. Nesten ingen bruker det noen gang, og jeg anbefaler ikke å installere x32. Jeg vil dekke hvordan man ikke får den støtten, da det ikke er nødvendig. Som en generell regel finnes det noen pakker som har følgende deler: et 64-bit kompileringstrinn, et 32-bit kompileringstrinn og et x32-bit kompileringstrinn. X32-bit kompileringstrinnene kan hoppes over helt.
mkdir -pv $LFS/usr/lib{,x}32
Bør endres til:
ln -sv usr/lib32 $LFS/lib32
ln -sv usr/libx32 $LFS/libx32
mkdir -pv $LFS/usr/lib32
ln -sv usr/lib32 $LFS/lib32
chown -v lfs $LFS/{lib32,libx32}
Should be changed to:
chown -v lfs $LFS/lib32
cat > ~/.bashrc << "EOF"
Bør endres til:
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=x86_64-lfs-linux-gnu
LFS_TGT32=i686-lfs-linux-gnu
LFS_TGTX32=x86_64-lfs-linux-gnux32
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=x86_64-lfs-linux-gnu
LFS_TGT32=i686-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT LFS_TGT32 PATH
EOF
Med de nåværende instruksjonene, og dette gjelder ikke bare multilib, er ikke nscd lenger nødvendig, men configure-kommandoen har alltid funnet en måte å bygge nscd på for meg. Derfor anbefaler jeg å inkludere følgende i configure-kommandoen med alle gjennomganger:
--disable-nscd
Jeg ville også lagt det inn i libstdc++ configure-kommandoen for sikkerhets skyld....
Når det gjelder multilib, må brukeren definere env-variabelen: mlist, og den er definert slik:
mlist=m64,m32,mx32 ../configure ...
Men det bør endres til:
mlist=m64,m32 ../configure ...
Ikke utfør følgende kommando hvis du vil unngå en feil (mappen skal ikke være der), med mindre du liker feil:
chown -R root:root $LFS/libx32
Når du aktiverer binær emulering i Linux-kjernen, må du ikke aktivere x32 ABI for 64-bit mode [CONFIG_X86_X32]
.
Det dekker underavsnittet uten x32-bit.
lib32-GDBM trengs av noen skrivebordspakker du prøver å kompilere lib32 for, så det er lurt å kompilere det slik at du ikke trenger å gå tilbake senere.:
Det dekker underavsnittet om lib32-GDBM-kompileringen og problemer med multilib LFS-veiledningen..
CC="gcc -m32" CXX="g++ -m32" \
./configure --prefix=/usr \
--libdir=/usr/lib32 \
--disable-static \
--enable-libgdbm-compat
make
make DESTDIR=$PWD/DESTDIR install
cp -vr DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR
Vel, du er ferdig med å få tak i verktøyene du trenger for lib32-kompilering og er klar for Steam- og/eller Wine-delene i denne veiledningen. Som en generell regel vil dette kommandoformatet kompilere lib32-bibliotekene for deg:
Det ville være lurt å også sjekke om bibliotekene du nettopp kompilerte er 32-bit, og det kan gjøres ved hjelp av file. Hvis du ikke sjekker det og det ender opp med å være 64-bit, vil pakken du prøver å kompilere for 32-bit som er avhengig av den forrige pakken, få feil under koblingstrinnet fordi avhengighetsbiblioteket er i et ugyldig format. Et enkelt bibliotek som er 64-bit i lib32-katalogen vil ikke ødelegge systemet ditt, men du må fikse problemet før du kan kompilere pakker som er avhengige av det.
CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig [configure/meson/cmake...] ... --libdir=/usr/lib32
[make / ninja]
[make DESTDIR=$PWD/DESTDIR install] / [DESTDIR=$PWD/DESTDIR ninja install]
cp -vr DESTDIR/usr/lib32/* /usr/lib32