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 Libstdc++ avhenger av Glibc, som ennå ikke var tilgjengelig i målmappen.

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

5.6.1. Installasjon av Target 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 forhåndskompilerte include 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 include 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++ include 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 når GCC pass 1 ble bygget) 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 kommandoen 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.”