Я использую Gentoo в качестве основной домашней ОС для рабочего стола. С ~2004 года. Я ценю emerge
команду для управления исходной ОС, как и она. Время от времени я проверяю другие дистрибутивы, но мне особенно нравитсяLinux From Scratch — для тех, кто не знает. Конечно, я никогда не проходил всю книгу, потому что использование Gentoo избаловало меня в этом отношении. Я считаю Gentoo LFS + менеджером пакетов. Я наконец решил, что собираюсь закончить книгу, поэтому я установил XUbuntu на виртуальную машину, чтобы имитировать новизну и ...
Я слежу за релиз-кандидатомВерсия 3 - Системный CLFS, и меня осенилоГлава 6 - Временная система - Создание. Если пользователю необходимо make
скомпилировать версию Make,Проблема причинности курицы и яйцапоявляется Это подводит меня к следующим логическим вопросам.
КогдаСтюарт Фельдмансозданный
make
в 1976 году, как компьютерная общественность скомпилировала его программу, если их ОС не содержала зависимостей ОСmake
? Должен ли я предположить, что статья Википедии ниже верна для каждой ОС?Нужно ли ему было упаковывать make, чтобы включить в него все версии make, зависящие от ОС, для завершения 1?(См. ниже)
Если мне нужна программа A, но она доступна для компиляции только в ОС A, нужно ли мне покупать ОС A, даже если я использую ОС B? (По возможности игнорируйте Windows.)
Обновлять
- На основании комментария jimmij,Существовали ли компиляторы, специфичные для ОС, подобно тому, как make зависел от ОС?
Википедияговорит:
До появления Make система сборки Unix чаще всего состояла из зависящих от операционной системы скриптов оболочки "make" и "install", сопровождающих исходный код программы. Возможность объединять команды для различных целей в один файл и возможность абстрагироваться от отслеживания зависимостей и обработки архивов была важным шагом в направлении современных сред сборки.
Также, обратите внимание, что я ищу здесь некоторую историческую перспективу, поскольку я родился в 1976 году.
решение1
Make просто для удобства. Вы можете создавать ПО и без него, просто это сложнее.
Когда вы запускаете make
что-то, чтобы построить, он показывает вам команды, которые он запускает. Вы можете запустить эти команды вручную и получить тот же эффект.
$ echo "int main() {}" > test.c
$ make test
cc test.c -o test
Что создало файл с именем test
.
Я могу получить тот же результат, просто выполнив:
cc test.c -o test
Если бы make не существовал, вы могли бы либо попросить пользователей запустить эту cc
команду вручную, либо распространить скрипт оболочки и попросить их запустить этот скрипт.