Detalhes acerca deste pacote estão localizados na Seção 8.29.2, “Conteúdo do GCC.”
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.
Libstdc++ é parte dos fontes do
GCC. Você deveria primeiro desempacotar o tarball do GCC e mudar
para o diretório gcc-14.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++/14.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++/14.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++/14.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++{,exp,fs},supc++}.la
Detalhes acerca deste pacote estão localizados na Seção 8.29.2, “Conteúdo do GCC.”