8.18. Binutils-2.40

Binutils pakken inneholder en linker, en assembler og annet verktøy for håndtering av objektfiler.

Omtrentlig byggetid: 2.2 SBU
Nødvendig diskplass: 2.6 GB

8.18.1. Installasjon av Binutils

Kontroller at PTYene fungerer som de skal inne i chroot miljøet ved å utføre en enkel test:

expect -c "spawn ls"

Denne kommandoen burde gi følgende utdata:

spawn ls

Hvis utdataene i stedet inkluderer meldingen nedenfor, er miljøet ikke satt opp for riktig PTY drift. Dette problemet må løses før testpakkene for Binutils og GCC kjøres:

The system has no more ptys.
Ask your system administrator to create more.

Binutils dokumentasjonen anbefaler å bygge Binutils i en dedikert byggemappe:

mkdir -v build
cd       build

Forbered Binutils for kompilering:

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

Betydningen av konfigureringsparametrene:

--enable-gold

Bygg gold linkeren og installer den som ld.gold (ved siden av standard linker).

--enable-ld=default

Bygg den originale bfd linkeren og installer den som både ld (som er standard linker) og ld.bfd.

--enable-plugins

Aktiverer støtte for programtillegg for linkeren.

--enable-64-bit-bfd

Aktiverer 64 bits støtte (på verter med smalere ordstørrelser). Kanskje ikke nødvendig på 64 bits systemer, men skader ikke.

--with-system-zlib

Bruk det installerte zlib biblioteket i stedet for å bygge den inkluderte versjonen.

Kompiler pakken:

make tooldir=/usr

Betydningen av make parameteren:

tooldir=/usr

Vanligvis er verktøymappen (mappen der de kjørbare filene til slutt vil bli lokalisert i) satt til $(exec_prefix)/$(target_alias). For eksempel, x86_64-maskiner vil utvide det til /usr/x86_64-pc-linux-gnu. Fordi dette er et tilpasset system, er denne målspesifikke katalogen i /usr ikke påkrevd. $(exec_prefix)/$(target_alias) ville vært brukt hvis systemet ble brukt til å krysskompilere (for eksempel kompilering av en pakke på en Intel maskin som genererer kode som kan kjøres på PowerPC maskiner).

[Important]

Important

Testpakken for Binutils i denne delen anses som kritisk. Ikke hopp over det under noen omstendigheter.

Test resultatene:

make -k check

For en liste over mislykkede tester, kjør:

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

Tolv tester mislykkes i gold testpakken når --enable-default-pie og --enable-default-ssp alternativene sendes til GCC.

Installer pakken:

make tooldir=/usr install

Fjern ubrukelige statiske biblioteker og tom manside:

rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a
rm -fv /usr/share/man/man1/{gprofng,gp-*}.1

8.18.2. Innhold i Binutils

Installerte programmer: addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings, og strip
Installerte biblioteker: libbfd.so, libctf.so, libctf-nobfd.so, libopcodes.so, og libsframe.so
Installert mappe: /usr/lib/ldscripts

Korte beskrivelser

addr2line

Oversetter programadresser til filnavn og linjenumre; gitt en adresse og navnet på en kjørbar fil, bruker den feilsøkingsinformasjonen i den kjørbare filen for å bestemme hvilken kildefil og linjenummer som er knyttet til adressen

ar

Oppretter, endrer og trekker ut fra arkiver

as

En assembler som setter sammen utdataene til gcc inn i objektfiler

c++filt

Brukes av linkeren til å dekode C++ og Java symboler og hindre overbelastede funksjoner å krasje

dwp

DWARF pakkeverktøyet

elfedit

Oppdaterer ELF deklarasjonen til ELF filer

gprof

Viser profildata for kallgrafen

gprofng

Samler og analyser ytelsesdata

ld

En linker som kombinerer en rekke objekt og arkivfiler inn i en enkelt fil, flytter dataene deres og rydder opp i symbolreferanser

ld.gold

En nedskalert versjon av ld som bare støtter objektfil formatet elf

ld.bfd

Hardlenke til ld

nm

Lister symbolene som forekommer i en gitt objektfil

objcopy

Oversetter én type objektfil til en annen

objdump

Viser informasjon om den gitte objektfilen, med alternativer kontrollerer den hvilken informasjonen som skal vises; informasjonen som vises er nyttig for programmerere som jobber med kompileringens verktøy

ranlib

Genererer en indeks over innholdet i et arkiv og lagrer det i arkivet; indeksen viser alle symbolene som er definert av arkivmedlemmer som er flyttbare objektfiler

readelf

Viser informasjon om binærfiler av ELF typen

size

Viser seksjonsstørrelsene og totalstørrelsen for de gitte objektfilene

strings

Utdata, for hver gitt fil, sekvensene av utskrivbare tegn som er av minst den angitte lengden (som standard til fire); for objektfiler skriver den som standard bare strengene fra initialiserings- og lastingsseksjonene mens for andre typer filer, skanner den hele filen

strip

Fjerner symboler fra objektfiler

libbfd

Biblioteket med binære filbeskrivelser

libctf

Compat ANSI-C Type Format støttebibliotek for feilsøking

libctf-nobfd

En libctf variant som ikke bruker libbfd funksjonalitet

libopcodes

Et bibliotek for å håndtere opkoder—leselig tekst versjoner av instruksjoner for prosessoren; den brukes til å bygge verktøy som objdump

libsframe

Et bibliotek for å støtte tilbakesporing på nettet ved hjelp av en enkel avvikling