Innhold
Noen program- og biblioteknavn og beskrivelser er ikke oppført her, men du finner dem på LFS seksjonen for GCC siden de opprinnelig var installert under byggingen av LFS.
GCC pakken inneholder GNU kompilatoren samlingen. Denne siden beskriver installasjonen av kompilatorer for følgende språk: C, C++, Fortran, Objective C, Objective C++, Go, og Modula2. Siden C og C++ er installert i LFS, er denne siden enten for å oppgradere C og C++, eller for å installere ekstra kompilatorer.
Ytterligere språk, blant annet D og Ada, er tilgjengelige i
samlingen. D og Ada har et binært oppstartskrav for den første
installasjon, så deres installasjon er ikke beskrevet her. For å
installere dem, kan du fortsette på samme måte som nedenfor etter
installasjonen av den tilsvarende kompilatoren fra en binær
pakke, legg til ada
eller
d
til --enable-languages
linjen.
Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.2 plattform.
Hvis du oppgraderer GCC fra en versjon før 14.2.0, da må du være forsiktig med å kompilere 3rd parts kjernemoduler. Du bør sørge for at kjernen og alle dens opprinnelige moduler også er kompilert med samme versjon av GCC som du bruker til å bygge tredjepartsmodulen. Dette problemet påvirker ikke den opprinnelige kjernen (og kjernemoduler) oppdateringer, siden instruksjonene nedenfor er en fullstendig reinstallasjon av GCC. Hvis du har eksisterende tredjepartsmoduler installert, sørg for at de kompileres på nytt med den oppdaterte versjonen av GCC.
Nedlasting (HTTP): https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz
Nedlasting MD5 sum: 2268420ba02dc01821960e274711bde0
Nedlastingsstørrelse: 88 MB
Estimert diskplass som kreves: 11 GB (3.4 GB installert med alle oppførte språk; legg til 1,5 GB for tester)
Estimert byggetid: 14 SBU (legg til 34 SBU for tester; begge med parallellitet=8)
GDB-15.1, Graphviz-12.1.0 (noen tester bruker den hvis den er installert; noter at hvis den er installert, men ikke bygget med libpng-1.6.43 disse testene vil mislykkes), Valgrind-3.23.0 (for tester), og ISL (for å aktivere grafittoptimalisering)
Selv om du bare spesifiserer andre språk enn C og C++ til ./configure kommandoen nedenfor, vil installasjonsprosessen overskrive din eksisterende GCC C og C++ kompilatorer og biblioteker. Det anbefales å kjøre hele pakken med tester.
Ikke fortsett med make install kommandoen til du er sikker på at byggingen var vellykket. Du kan sammenligne dine testresultater med de funnet på https://gcc.gnu.org/ml/gcc-testresults/. Du vil kanskje også se informasjonen som finnes i GCC del av kapittel 8 i LFS boken (../../../../lfs/view/12.2/chapter08/gcc.html).
Instruksjonene nedenfor utfører med vilje en “bootstrap” prosess.
Bootstrapping er nødvendig for robusthet og anbefales sterkt når du
oppgraderer kompilatorversjonen. For å deaktivere bootstrap
uansett, legg til --disable-bootstrap
til ./configure alternativene
nedenfor.
Installer GCC ved å kjøre følgende kommandoer:
case $(uname -m) in x86_64) sed -i.orig '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 ;; esac mkdir build && cd build && ../configure \ --prefix=/usr \ --disable-multilib \ --with-system-zlib \ --enable-default-pie \ --enable-default-ssp \ --enable-host-pie \ --disable-fixincludes \ --enable-languages=c,c++,fortran,go,objc,obj-c++,m2 && make
Hvis du kjører tester, som i LFS, fjern/fiks flere kjente testfeil:
sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp sed -e 's/no-pic /&-no-pie /' -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c sed -e 's/300000/(1|300000)/' -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c sed -e 's/{ target nonpic } //' \ -e '/GOTPCREL/d' -i ../gcc/testsuite/gcc.target/i386/fentryname3.c
Hvis du har installert tilleggspakker som f.eks Valgrind og gdb, gcc delen av testpakken vil kjøre mer tester enn i LFS. Noen av disse vil rapportere FAIL og andre XPASS (bestått når det forventes å FEILE). Fra og med gcc-14.1.0 oppstår omtrent 74 FAIL i “guality” pakken, samt diverse feil gjennom resten av testpakken. Hvis alle kompilatorene ovenfor er bygget, vil det være litt over 110 uventede feil av over 617,000 tester. For å kjøre testene, utsted:
make -k check
Testene er veldig lange, og resultatene kan være vanskelige å finne i logger, spesielt hvis du bruker parallelle jobber med make. Du kan få et sammendrag av testene med:
../contrib/test_summary
Nå, som root
bruker:
make install && mkdir -pv /usr/share/gdb/auto-load/usr/lib && mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib && chown -v -R root:root \ /usr/lib/gcc/*linux-gnu/14.2.0/include{,-fixed} && ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/14.2.0/liblto_plugin.so \ /usr/lib/bfd-plugins/
mkdir build; cd build: GCC dokumentasjon anbefaler å bygge pakken i en dedikert byggemappe.
--disable-multilib
: Denne
parameteren sikrer at filer opprettes for den spesifikke
arkitekturen til datamaskinen din.
--with-system-zlib
: Bruker
systemets zlib i stedet for den
medfølgende. zlib brukes til
komprimering og dekomprimering av GCC sin mellomliggende språk i LTO (Link Time
Optimization) objektfiler.
--enable-default-pie
: Gjør
-fpie
alternativet standard når du
kompilerer programmer. Sammen med ASLR funksjonen aktivert i kjernen,
beseirer dette en del angrep basert på kjente minneoppsett.
--enable-default-ssp
: Gjør
-fstack-protector-strong
alternativet
standard når du kompilerer programmer. SSP er en teknikk som hindrer endring av
programflyten ved å ødelegge parameterstabelen.
--enable-host-pie
: Gjør
kompilatoren kjørbare PIE (Position Independent Executable). Dette
kan brukes til forbedre beskyttelsen mot ROP angrep (Return
Oriented Programming), og kan sees på som en del av en bredere
trend for å herde binærfiler.
--enable-languages=c,c++,fortran,go,objc,obj-c++,m2
:
Denne kommandoen identifiserer hvilke språk som skal bygges. Du kan
endre denne kommandoen for å fjerne uønskede språk. GCC støtter
også Ada og D, men å bygge GCC med Ada (eller D) støtte trenger en
eksisterende Ada (eller D) kompilator. Så de er ikke aktivert her
make -k check: Denne kommandoen kjører testpakken uten å stoppe hvis det oppstår feil.
../contrib/test_summary: Denne kommandoen vil produsere et sammendrag av resultatene fra testserien. Du kan legge til | grep -A7 Summ til kommandoen for å produsere en enda mer kondensert versjon av sammendraget. Du kan også ønske å omdirigere utdataene til en fil for gjennomgang og sammenligning senere.
--enable-host-shared
--enable-languages=jit
: Bygg libgccjit
, et bibliotek for å bygge inn GCC i
programmer og biblioteker for å generere maskin kode. På tross av
“JIT”
(just-in-time) i navnet, biblioteket kan også brukes til AOT
(ahead-of-time) kompilering. --enable-host-shared
er nødvendig for å bygge
libgccjit
, men det reduserer GCC
betydelig. Så libgccjit
bør bli
bygget og installert separat, ikke som en del av “main” GCC installasjon.
Hvis du trenger dette biblioteket, konfigurer GCC med disse to
alternativene og installer biblioteket ved å kjøre make -C gcc jit.install-common
jit.install-info som root
bruker. Dette biblioteket brukes ikke av
noen BLFS pakker, og er ikke testet av BLFS utviklerne.
mv -v /usr/lib/*gdb.py
...: Installasjonensteg setter noen filer som
brukes av gdb under /usr/lib
mappen. Dette genererer falske
feilmeldinger når du utfører ldconfig. Dette kommandoen
flytter filene til et annet sted.
chown -v -R root:root
/usr/lib/gcc/*linux-gnu/...: Hvis pakken er bygget
av en annen bruker enn root, vil eierskapet til installerte
include
mappen (og innholdet) vil
være feil. Denne kommandoen endrer eierskapet til root
bruker og gruppe.
Noen program- og biblioteknavn og beskrivelser er ikke oppført her, men du finner dem på LFS seksjonen for GCC siden de opprinnelig var installert under byggingen av LFS.