Detaljer om denne pakken finner du i Section 8.20.2, “Innhold i Binutils”
Binutils pakken inneholder en linker, en assembler og annet verktøy for håndtering av objektfiler.
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
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”