Detalhes deste pacote estão localizados na Seção 8.20.2, “Conteúdo do Binutils.”
O pacote Binutils contém um vinculador, um montador e outras ferramentas para manusear arquivos objeto.
Volte e releia as observações na seção intitulada Instruções Gerais de Compilação. Entender as observações rotuladas como importantes pode salvar você de um monte de problemas depois.
É importante que o Binutils seja o primeiro pacote compilado, pois ambos a Glibc e o GCC realizam vários testes sobre o vinculador e o montador disponíveis para determinar quais dos próprios recursos deles habilitar.
A documentação do Binutils recomenda construir o Binutils em um diretório dedicado à construção:
mkdir -v build cd build
Para a finalidade de que os valores da UPC listados no resto do
livro sejam de algum uso, meça o tempo que leva para construir
esse pacote desde a configuração até, e incluindo, a primeira
instalação. Para fazer isso facilmente, encapsule os comandos em
um comando time
desta forma: time { ../configure
... && make && make install; }
.
Agora prepare o Binutils para compilação:
../configure --prefix=$LFS/tools \ --with-sysroot=$LFS \ --target=$LFS_TGT \ --disable-nls \ --enable-gprofng=no \ --disable-werror \ --enable-new-dtags \ --enable-default-hash-style=gnu
O significado das opções do configure:
--prefix=$LFS/tools
Isso diz para o script configure para preparar para instalar
os aplicativos do Binutils no diretório $LFS/tools
.
--with-sysroot=$LFS
Para compilação cruzada, isso diz ao sistema de construção para procurar em $LFS pelas bibliotecas alvo de sistema conforme necessário.
--target=$LFS_TGT
Por causa da descrição de máquina na variável LFS_TGT
ser ligeiramente diferente do valor
retornado pelo script config.guess, essa chave
dirá ao script configure para ajustar o
sistema de construção do binutils para construir um
vinculador cruzado.
--disable-nls
Isso desabilita internacionalização, uma vez que i18n não é necessária para as ferramentas temporárias.
--enable-gprofng=no
Isso desabilita a construção do gprofng o qual não é necessário para as ferramentas temporárias.
--disable-werror
Isso evita que a construção pare no caso de existirem alertas originários do compilador do anfitrião.
--enable-new-dtags
Isso faz com que o vinculador use a etiqueta “runpath” para incorporar caminhos de pesquisa de biblioteca em executáveis e em bibliotecas compartilhadas, em vez da tradicional etiqueta “rpath”. Ela torna mais fácil depurar executáveis vinculados dinamicamente e contorna possíveis problemas na suíte de teste de alguns pacotes.
--enable-default-hash-style=gnu
Por padrão, o vinculador geraria a tabela "hash" no estilo "GNU" e a tabela "hash" "ELF" clássica para bibliotecas compartilhadas e executáveis vinculados dinamicamente. As tabelas "hash" destinam-se somente a um vinculador dinâmico para realizar a pesquisa de símbolos. No LFS, o vinculador dinâmico (fornecido pelo pacote "Glibc") sempre usará a tabela "hash" no estilo "GNU", que é mais rápida de consultar. Portanto, a tabela "hash" "ELF" clássica é completamente inútil. Isso faz com que o vinculador gere somente a tabela "hash" estilo "GNU" por padrão, de forma que possamos evitar desperdiçar tempo para gerar a tabela "hash" "ELF" clássica quando construirmos os pacotes ou desperdiçar espaço em disco para armazená-la.
Continue compilando o pacote:
make
Instale o pacote:
make install
Detalhes deste pacote estão localizados na Seção 8.20.2, “Conteúdo do Binutils.”