8.18. Binutils-2.41

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

Tempo aproximado de construção: 2,2 UPC
Espaço em disco exigido: 2,7 GB

8.18.1. Instalação do Binutils

A documentação do Binutils recomenda construir o Binutils em um diretório dedicado à construção:

mkdir -v build
cd      build

Prepare o Binutils para compilação:

../configure --prefix=/usr       \
             --sysconfdir=/etc   \
             --enable-gold       \
             --enable-ld=default \
             --enable-plugins    \
             --enable-shared     \
             --disable-werror    \
             --enable-64-bit-bfd \
             --with-system-zlib

O significado dos parâmetros do configure:

--enable-gold

Constrói o vinculador gold e o instala como ld.gold (juntamente com o vinculador padrão).

--enable-ld=default

Constrói o vinculador bfd original e o instala como ambos ld (o vinculador padrão) e ld.bfd.

--enable-plugins

Habilita suporte de plugin para o vinculador.

--enable-64-bit-bfd

Habilita suporte de 64 bits (em anfitriões com tamanhos de palavra mais estreitos). Possivelmente não seja necessário em sistemas de 64 bits, porém não causa dano.

--with-system-zlib

Usa a biblioteca zlib instalada em vez de construir a versão incluída.

Compile o pacote:

make tooldir=/usr

O significado do parâmetro do make:

tooldir=/usr

Normalmente, o tooldir (o diretório onde os executáveis ultimamente estarão localizados) é configurado para $(exec_prefix)/$(target_alias). Por exemplo, máquinas x86_64 expandiriam isso para /usr/x86_64-pc-linux-gnu. Por causa que este é um sistema personalizado, esse diretório alvo específico em /usr não é exigido. $(exec_prefix)/$(target_alias) seria usado se o sistema fosse usado para compilar cruzadamente (por exemplo, compilar um pacote em uma máquina Intel que gera código que pode ser executado em máquinas PowerPC).

[Importante]

Importante

A suíte de teste para Binutils nesta seção é considerada crítica. Não a pule sob quaisquer circunstâncias.

Teste os resultados:

make -k check

Para uma lista de testes falhos, execute:

grep '^FAIL:' $(find -name '*.log')

Doze testes falham na suíte de teste gold quando as opções --enable-default-pie e --enable-default-ssp são passadas para o GCC.

Três testes na suíte "gprofng" também são conhecidos por falharem.

Instale o pacote:

make tooldir=/usr install

Remova bibliotecas estáticas inúteis:

rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a

8.18.2. Conteúdo do Binutils

Aplicativos instalados: addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings e strip
Bibliotecas instaladas: libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so e libsframe.so
Diretório instalado: /usr/lib/ldscripts

Descrições Curtas

addr2line

Traduz endereços de aplicativos para nomes de arquivo e números de linha; dado um endereço e o nome de um executável, ele usa a informação de depuração no executável para determinar qual arquivo fonte e número de linha estão associados com o endereço

ar

Cria, modifica e extrai a partir de arquivamentos

as

Um montador que monta a saída gerada do gcc para dentro de arquivos objeto

c++filt

Usado pelo vinculador para desmembrar símbolos C++ e Java e para impedir que funções sobrecarregadas entrem em conflito

dwp

O utilitário de empacotamento DWARF

elfedit

Atualiza o cabeçalho ELF de arquivos ELF

gprof

Exibe dados do perfil de gráfico de chamada

gprofng

Coleta e analisa dados de desempenho

ld

Um vinculador que combina um número de objetos e arquivos de arquivamento em um arquivo, realocando os dados deles e vinculando referências de símbolos

ld.gold

Uma versão reduzida do ld que suporta somente o formato de arquivo objeto elf

ld.bfd

Um link rígido para o ld

nm

Lista os símbolos ocorrentes em um dado arquivo objeto

objcopy

Traduz um tipo de arquivo objeto em outro

objdump

Exibe informação a respeito do dado arquivo objeto, com opções controlando a informação particular a exibir; a informação mostrada é útil para programadores(as) que estão trabalhando nas ferramentas de compilação

ranlib

Gera um índice do conteúdo de um arquivamento e o armazena no arquivamento; o índice lista todos os símbolos definidos pelos membros do arquivamento que são arquivos objeto realocáveis

readelf

Exibe informação a respeito de binários do tipo ELF

size

Lista os tamanhos de seção e o tamanho total para os arquivos objeto dados

strings

Exibe, para cada arquivo dado, as sequências de caracteres imprimíveis que são, no mínimo, do comprimento especificado (padronizado para quatro); para arquivos objeto, ele imprime, por padrão, somente as sequências de caracteres a partir das seções de inicialização e carregamento enquanto que para outros tipos de arquivos, ele escaneia o arquivo inteiro

strip

Descarta símbolos originários de arquivos objeto

libbfd

A biblioteca de Descritor de Arquivo Binário

libctf

A biblioteca de suporte de depuração Compat ANSI-C Type Format

libctf-nobfd

Uma variante da libctf que não usa funcionalidade da libbfd

libgprofng

Uma biblioteca contendo a maioria das rotinas usadas pelo gprofng

libopcodes

Uma biblioteca para lidar com opcodes—as versões de texto legível de instruções para o processador; é usada para construir utilitários como o objdump

libsframe

Uma biblioteca para suportar retrocesso em linha usando um desbobinador simples