5.2. Binutils-2.43.1 - Passagem 1

O pacote Binutils contém um vinculador, um montador e outras ferramentas para manusear arquivos objeto.

Tempo aproximado de construção: 1 UPC
Espaço em disco exigido: 677 MB

5.2.1. Instalação do Binutils Cruzado

[Nota]

Nota

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
[Nota]

Nota

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