С виртуальной памятью инструменты компилятора/компоновщика действительно не должны сильно беспокоиться об объеме памяти.
Инструмент запрашивает то, что ему нужно, и ОС либо обеспечивает достаточно в адресном пространстве процесса, либо в качестве виртуальной памяти, либо [решение политики для конкретной машины] ОС отказывается от запроса инструмента, чтобы увеличить пространство в какой-то момент, а процесс получает ошибку и обычно завершает работу.
Конечно, у вас может быть система с огромным лимитом VM и недостаточно физической памяти для ее поддержки. Затем инструмент будет разбиваться на страницы до тех пор, пока он не удастся, или оператор не остановит его с отвращением.
[У нас есть собственный компилятор, который мы часто используем для составления нескольких миллионов монолитных программ. Этот компилятор обычно хочет несколько сотен мегабайт виртуальной машины для обработки этой программы. Это легко обеспечивается большинством современных ПК.]
Большинство исходных файлов небольшие. – melpomene
Линкерам не нужно много памяти. Составители делают, но их можно разделить на проходы. – EJP
@melpomene Вы были бы удивлены. Раньше у меня был компилятор (Watcom), который печатал количество скомпилированных строк, и обычно это было несколько сотен для файла .c или .cpp и много тысяч для файлов .h/.hpp. – EJP