5.6. Libstdc++ oriundo de GCC-12.2.0

Libstdc++ é a biblioteca padrão C++. Ela é necessária para compilar código C++ (parte de GCC é escrito em C++), porém nós tivemos que adiar a instalação dela quando construímos gcc-pass1, pois a Libstdc++ depende da Glibc, que ainda não estava disponível no diretório alvo.

Tempo aproximado de construção: 0.2 SBU
Espaço em disco exigido: 1.1 GB

5.6.1. Instalação da Libstdc++ Alvo

[Nota]

Nota

Libstdc++ é parte dos fontes do GCC. Você deveria primeiro desempacotar o tarball do GCC e mudar para o diretório gcc-12.2.0.

Crie um diretório separado de construção para a Libstdc++ e entre nele:

mkdir -v build
cd       build

Prepare a Libstdc++ para compilação:

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

O significado das opções do configure:

--host=...

Especifica que o compilador cruzado que nós acabamos de construir deveria ser usado em vez daquele em /usr/bin.

--disable-libstdcxx-pch

Essa chave evita a instalação de arquivos pré-compilados include, os quais não são necessários neste estágio.

--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0

Isso especifica o diretório de instalação para arquivos include. Por causa da Libstdc++ ser a biblioteca padrão C++ para o LFS, esse diretório deveria corresponder com o local onde o compilador C++ ($LFS_TGT-g++) procuraria pelos arquivos padrão include C++ . Em uma construção normal, essa informação é automaticamente passada para as opções configure da Libstdc++ a partir do diretório de nível de topo. Em nosso caso, essa informação precisa ser explicitamente dada. O compilador C++ precederá o caminho raiz do sistema $LFS (especificado quando da construção do GCC passagem 1) para o caminho de pesquisa de arquivo include, de forma que ele atualmente pesquisará em $LFS/tools/$LFS_TGT/include/c++/12.2.0. A combinação da variável DESTDIR (no comando make install abaixo) e essa chave causa os cabeçalhos serem instalados lá.

Compile a Libstdc++ executando:

make

Instale a biblioteca:

make DESTDIR=$LFS install

Remova os arquivos de arquivamento do libtool, pois eles são danosos para compilação cruzada:

rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la

Detalhes acerca deste pacote estão localizados em Seção 8.26.2, “Conteúdo do GCC.”