Я хотел бы знать, почему, когда я работаю gcc -v
под Arch Linux, он показывает unknown
слово в этих выходных данных:
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
в то время как в другом дистрибутиве, например, в Ubuntu, он показывает название дистрибутива, например 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
источник
источник
gcc
Были установленыcore
пакеты, когда я устанавливал Arch.Ответы:
Как уже упоминалось в комментарии, по умолчанию целевой триплет генерируется скриптом config.guess . Это логика довольно проста. Сначала он использует
uname
для получения базовой информации о системе:Эти строки объединяются и сопоставляются с жестко закодированными узорами. Результат также жестко закодирован:
Для некоторых систем можно дать более значимый результат, как IBM в «rs6000-ibm-aix».
Специалисты по распространению просто переопределяют эту строку своей собственной (также жестко закодированной):
GCC 6, вероятно, выведет x86_64-pc-linux-gnu по умолчанию: обновленный config.guess в исходном хранилище.
источник
unknown
по умолчанию жестко закодирован.Это часть производителя триплета конфигурации / цели. Об этом говорится в автобуке :
Руководство Autoconf называет это
company
.Я не специалист по компиляции с GCC, но похоже, что информация, предоставленная этим полем, носит информационный характер и
unknown
является просто значением по умолчанию, используемым GCC, если явно не перезаписано. GCC в Ubuntu 12.04, например, используетx86_64-linux-gnu
Debian 7s GCCi486-linux-gnu
, поэтому вполне можно оставить поле пустым.источник
x86_64-linux-gnu
Разнообразие являются ярлык цели, стоя наx86_64-unknown-linux-gnu
илиx86_64-pc-linux-gnu
.gcc -v
показывает цель, для которой он был скомпилирован, иconfig.sub
дает канонический триплет (ищите его в/usr/share/misc
системах на основе Debian сautotools-dev
установленными).