Допустим, работаете вы на десктопном компьютере. Компилировать на типичной дешевой офисной машинке что-либо долго и затратно. И вы решаете использовать какой-нибудь сервер помощнее, чтобы компилировать на нём. И тут оказывается, что процессоры на десктопном компьютере и на сервере разные, с разными наборами инструкций (например IMCI). А программа должна потом работать на какой-нибудь raspberry pi (третий тип процессора).
Если собирать тулчейн GNU/Linux для всех этих машин, то получается, что нужно собрать 1+1+N комплектов программ, где N - это количество финальных дистрибутивов под разные платформы. Платформ может быть много:
x32 (старые ноутбуки, новые Compute Modules с малым объёмом памяти, виртуальные машины)
x86_64 (десктопы)
i386 - кому и зачем он нужен? компьютеров-то таких давно нет уже...
arm (сотовые телефоны, raspberry pi)
MIPS (роутеры какие-нибудь)
cygwin - для windows
mingw - тоже для windows но используя другой компилятор
Раз нужно собрать 2+N комплектов программ, то это значит что нужно иметь (в общем случае) столько же комплектов утилит сборки. Чтобы различать эти комплекты между собой, им всем добавляют префикс в путь в файловой системе:
<название платформы, название компьютера, описание операционной системы>
тут может возникнуть путаница - какие платформа, компьютер и операционка имеются в виду? Исходные или целевые? Целевые.
Это неочевидно, но следует из названия "Target triplet".
Располагаться эти тулчейны будут в разных местах:
один на исходной платформе (кросс компиляция для платформы сборки)
N+1 на платформе сборки (N целевых и один для себя)
N штук по одному на каждой финальной платформе (но это необязательно, можно и не устанавливать)
Отредактировано Лис (2019-06-26 00:11:47)