5.2. Binutils-2.43.1 - Pass 1

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

Omtrentlig byggetid: 1 SBU
Nødvendig diskplass: 677 MB

5.2.1. Installasjon av Kryss Binutils

[Note]

Note

Gå tilbake og les notatene i avsnittet med tittelen Generelle kompileringsinstruksjoner. å forstå notatene merket som viktig kan spare deg for mange problemer senere.

Det er viktig at Binutils er den første pakken som blir satt sammen fordi både Glibc og GCC utfører ulike tester på tilgjengelige linker og assembler for å bestemme hvilke av deres egne funksjoner som skal aktiveres.

Binutils dokumentasjonen anbefaler å bygge Binutils i en dedikert byggemappe:

mkdir -v build
cd       build
[Note]

Note

For at SBU verdiene som er oppført i resten av boken skal kunne brukes, måler du tiden det tar å bygge denne pakken fra konfigurasjonen, til og med den første installasjonen. For å oppnå dette enkelt, pakk kommandoene inn i en time kommando som dette: time { ../configure ... && make && make install; }.

Forbered nå Binutils til kompilering:

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

Betydningen av konfigurasjonsalternativene:

--prefix=$LFS/tools

Dette forteller konfigurasjonsskriptet å forberede for å installere Binutils programmene i $LFS/tools mappen.

--with-sysroot=$LFS

For krysskompilering, dette forteller byggesystemet å søke i $LFS etter målsystembibliotekene etter behov.

--target=$LFS_TGT

Fordi maskinbeskrivelsen i variabelen LFS_TGT er litt annerledes enn verdien som returneres av config.guess skriptet, vil denne bryteren fortelle skriptet configure om å justere Binutils byggesystem for å bygge en tverrlinker.

--disable-nls

Dette deaktiverer internasjonalisering ettersom i18n ikke er nødvendig for de midlertidige verktøyene.

--enable-gprofng=no

Dette deaktiverer bygging av gprofng som ikke er nødvendig for midlertidige verktøy.

--disable-werror

Dette forhindrer byggingen i å stoppe i tilfelle det er advarsler fra vertens kompilator.

--enable-new-dtags

Dette gjør at linkeren bruker runpath taggen for å bygge inn biblioteksøkestier i kjørbare filer og delte biblioteker, i stedet for det tradisjonelle rpath taggen. Det gjør feilsøking av dynamisk koblede kjørbare filer enklere og fungerer rundt potensielle problemer i testpakken til enkelte pakker.

--enable-default-hash-style=gnu

Som standard vil linkeren generere både GNU-stil hash tabell og det klassiske ELF-hash tabellen for delte biblioteker og dynamisk koblede kjørbare filer. Hash tabellene er kun ment for en dynamisk linker for å utføre symboloppslag. På LFS er dynamikken at linkeren (levert av Glibc-pakken) vil alltid bruke GNU-stil hashtabell som er raskere å spørre. Så klassikeren ELF hash-tabell er helt ubrukelig. Dette gjør at linkeren generer bare hashtabellen i GNU-stil som standard, slik at vi kan unngå å kaste bort tid på å generere den klassiske ELF-hash-tabellen når vi bygger pakkene, eller kaster bort diskplass for å lagre den.

Fortsett med å kompilere pakken:

make

Installer pakken:

make install

Detaljer om denne pakken finner du i Section 8.20.2, “Innhold i Binutils”