5.6. Libstdc++ fra GCC-12.2.0

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 .

Omtrentlig byggetid: 0.4 SBU
Nødvendig diskplass: 1.1 GB

5.6.1. Installasjon av Targer Libstdc++

[Note]

Note

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.”