Detaljer om denne pakken finner du i Section 8.26.2, “Innhold i GCC.”
Libstdc++ er standard C++-biblioteket. Det trengs for å kompilere C++-kode (en del av GCC er skrevet i C++), men vi måtte utsette installasjonen da vi bygde gcc-pass1 fordi det avhenger av glibc, som ennå ikke var tilgjengelig i målmappen .
Libstdc++ er en del av GCC
kildene. Du bør først pakke ut GCC tarball og bytte til
gcc-12.2.0
mappen.
Opprett en egen byggemappe for libstdc++ og gå inn i den:
mkdir -v build cd build
Forbered libstdc++ for kompilering:
../libstdc++-v3/configure \ --host=$LFS_TGT \ --build=$(../config.guess) \ --prefix=/usr \ --disable-multilib \ --disable-nls \ --disable-libstdcxx-pch \ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0
Betydningen av konfigureringsalternativene:
--host=...
Spesifiserer at krysskompilatoren vi nettopp har bygget skal
brukes i stedet for den i /usr/bin
.
--disable-libstdcxx-pch
Denne bryteren forhindrer installasjon av inkluderte forhåndskompilerte filer som ikke er nødvendige på dette stadiet.
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0
Dette spesifiserer installasjonsmappen for inkluderende
filer. Fordi libstdc++ er standard C++-biblioteket for LFS,
skal denne mappen samsvare med plasseringen der
C++-kompilatoren ($LFS_TGT-g++) vil søke
etter standard C++ inkludererende filer. I en normal
konstruksjon, sendes denne informasjonen automatisk til
libstdc++ configure alternativer fra
toppnivåmappen. I vårt tilfelle, denne informasjonen må gis
eksplisitt. C++-kompilatoren vil legge til sysroot banen
$LFS
(spesifisert bygning GCC
passerer 1) til inkludere filsøkebanen, så den vil faktisk
søke i $LFS/tools/$LFS_TGT/include/c++/12.2.0
.
Kombinasjonen av DESTDIR
variabelen (i
make install
kommando nedenfor) og denne bryteren sørger for å installere
deklarasjonene der.
Kompiler libstdc++ ved å kjøre:
make
Installer biblioteket:
make DESTDIR=$LFS install
Fjern libtool arkivfilene fordi de er skadelige for krysskompilering:
rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la
Detaljer om denne pakken finner du i Section 8.26.2, “Innhold i GCC.”