Мой родной gcc говорит, что его триплет следующий.Компиляция ядра GNU Triplet, GCC и Linux
> gcc -dumpmachine
x86_64-suse-linux
Где CPU-поставщика ОС являются соответственно x86_64, SuSE Linux. Последнее означает, что используются глифы (?). Когда я выполняю кросс-компиляцию системы на основе busybux, триплет компилятора - это что-то вроде avr32-linux-uclibc, где os - это «linux-uclibc», что означает, что используется uclibc.
Разница между 'linux-glibc' и 'linux-uclibc' (AFAIU) в поведении collect2 и содержимом libgcc.a. Либо glibc, либо uclibs молча связаны с целевым двоичным кодом.
Вопрос заключается в том, как как ядро linux было скомпилировано одними и теми же компиляторами? Как только ядро работает на bare-metal, оно не должно быть связано с каким-либо пользовательским пространством libc и должно использовать соответствующий libgcc.a
Некоторые компиляторы используют * квадруплет *. Форма: * architechure * - * vendor * - * os * - * library *. Но даже этого недостаточно, поскольку * FPU *, * формат объекта * и другие соглашения могут применяться. В корневом каталоге 'gcc' просто поддерживает префикс, который является свободной формой. Люди придумывают имена, и нет единого объединяющего органа, чтобы сделать их уникальными. '-dumpspecs' и т. д. могут использоваться для идентификации компилятора. –