Когда я использую MSYS для компиляции чего-то, ./configure
шаг может занять больше времени, чем make
. Однако тот же процесс в Linux имеет быстрое, настраивают, и медленный делают. Разве это - просто некоторая установка в MSYS, который является срыванием моя система? У кого-либо есть решение?
Типичные сценарии configure
выполняют много запуска небольших подпроцессов. В Unix-подобных операционных системах это делается с помощью вызовов функций fork ()
и exec ()
, которые имеют очень специфическую семантику, которую необходимо сохранить (например, copy- разделяемая память при записи после разветвления). В Windows подпроцессы создаются с помощью CreateProcess ()
, который имеет совсем другую семантику (например, полностью отделяет пространство памяти от родительского). Для правильного выполнения Unix-подобных сценариев и программ MSYS необходимо проделать большую работу по эмуляции, чтобы создание новых процессов в Windows работало как fork () / exec ()
в Unix. В конечном итоге это оказывается медленнее, чем ОС, которая предлагает эти вызовы функций изначально.