Je voudrais savoir pourquoi lorsque je tourne gcc -v
sous Arch Linux, cela montre le unknown
mot dans ces sorties:
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
tandis que dans une autre distribution, comme ubuntu, il affiche le nom de la distribution, comme 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
la source
la source
gcc
ont été installés avec lescore
packages lors de l'installation d'Arch.Réponses:
Comme cela a déjà été mentionné dans le commentaire, par défaut, le triplet cible est généré par le script config.guess . Sa logique est assez simple. Il utilise
uname
d' abord pour obtenir des informations système de base:Ces chaînes sont combinées et mises en correspondance avec des modèles codés en dur. Le résultat est également codé en dur:
Pour certains systèmes, il est possible de donner un résultat plus significatif, comme IBM dans "rs6000-ibm-aix".
Les responsables de la distribution remplacent simplement cette chaîne par leur propre chaîne (également codée en dur):
GCC 6 affichera probablement x86_64-pc-linux-gnu par défaut: config.guess mis à jour dans le référentiel en amont.
la source
unknown
est donc codé en dur par défaut.C'est la partie constructeur du triplet configuration / cible. L' Autobook dit à ce sujet:
Le manuel autoconf l' appelle
company
.Je ne suis pas un expert de la compilation avec GCC, mais il semble que les informations fournies par ce champ soient davantage de nature informative et ne
unknown
soient que la valeur par défaut que GCC utilise, sauf si elles sont écrasées explicitement. GCC sur Ubuntu 12.04 utilise par exemplex86_64-linux-gnu
, Debian 7s GCCi486-linux-gnu
, il est donc tout à fait possible de laisser le champ vide.la source
x86_64-linux-gnu
variétés sont des cibles de raccourci, représentantx86_64-unknown-linux-gnu
oux86_64-pc-linux-gnu
.gcc -v
montre la cible pour laquelle il a été compilé etconfig.sub
donne le triplet canonique (recherchez-le dans/usr/share/misc
les systèmes dérivés de Debian avecautotools-dev
installé).