Chciałbym wiedzieć, dlaczego, kiedy działam gcc -v
pod Arch Linux, pokazuje unknown
słowo w tych wynikach:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
podczas gdy w innych dystrybucjach, takich jak ubuntu, wyświetla nazwę dystrybucji, na przykład ubuntu
:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-ubuntu-linux-gnu/5.1.0/lto-wrapper
Target: x86_64-ubuntu-linux-gnu
linux
arch-linux
gcc
noslin005
źródło
źródło
gcc
zostały zainstalowane wraz zcore
pakietami podczas instalacji Arch.Odpowiedzi:
Jak już wspomniano w komentarzu, domyślnie triplet docelowy jest generowany przez skrypt config.guess . Jego logika jest dość prosta. Najpierw używa
uname
kilku podstawowych informacji o systemie:Ciągi te są łączone i dopasowywane do zakodowanych wzorów. Wynik jest również zakodowany na stałe:
W przypadku niektórych systemów można uzyskać bardziej znaczący wynik, na przykład IBM w „rs6000-ibm-aix”.
Opiekunowie dystrybucji po prostu nadpisują ten ciąg swoim własnym (także zakodowanym na stałe):
GCC 6 prawdopodobnie domyślnie wyświetli x86_64-pc-linux-gnu: zaktualizowano config.guess w repozytorium nadrzędnym.
źródło
unknown
jest domyślnie zakodowane na stałe.To część produkcyjna konfiguracji / docelowego trypletu. Autobook mówi o tym:
Podręcznik autoconf nazywa to
company
.Nie jestem ekspertem w kompilacji z GCC, ale wygląda na to, że informacje podane w tym polu mają raczej charakter informacyjny i
unknown
są tylko domyślną wartością, której używa GCC, chyba że zostaną wyraźnie nadpisane. Na przykład GCC na Ubuntu 12.04 używax86_64-linux-gnu
GCC Debiana 7i486-linux-gnu
, więc pozostawienie pola pustego jest całkowicie możliwe.źródło
x86_64-linux-gnu
Odmiany są cele SKRÓTU odstaniux86_64-unknown-linux-gnu
lubx86_64-pc-linux-gnu
.gcc -v
pokazuje cel, dla którego został skompilowany, iconfig.sub
podaje kanoniczną tryplet (poszukaj go w/usr/share/misc
systemach opartych na Debianie zautotools-dev
zainstalowanymi).