В чем разница между сборкой и компиляцией?

Ответы:

34

Компиляция является частью процесса сборки.

Процесс сборки может включать тестирование, упаковку и другие действия помимо компиляции.

Одед
источник
19

«Сборка» - это довольно общий термин, и он может относиться ко всему, что необходимо для перехода от редактируемого исходного материала (исходный код, сценарии, файлы необработанных данных и т. Д.) К готовому программному продукту. Сборка может (и обычно имеет) несколько этапов, таких как предварительная обработка, компиляция, компоновка, преобразование файлов данных, запуск автоматических тестов, упаковка и т. Д.

«Компиляция» более специфична и почти всегда относится к процессу, который принимает исходный код в качестве входных данных и выводит что-то работоспособное, обычно машинный код для физической или виртуальной машины, или исходный код на другом языке.

tdammers
источник
9

Эти термины часто используются взаимозаменяемо, но я бы выделил их следующим образом:

  • Сборка выполняется при подготовке приложения к выпуску, которое включает компиляцию, упаковку, тестирование и т. Д.
  • Компиляция выполняется в любое время, когда компилятор занимается переводом кода языка программирования в машинный код.

Таким образом, компиляция действительно подмножество сборки.

Бернард
источник
1
«Сборка выполняется при подготовке приложения к выпуску» - не говорите, что толпа непрерывной интеграции;) Или любой другой заядлый пользователь автоматических сборок, в этом отношении.
1
@delnan: Согласен. Непрерывная интеграция создает множество «сборок» в течение всего жизненного цикла приложения. Тем не менее, любая или все эти сборки могут быть использованы для подготовки к публичному выпуску. Это зависит от ваших процессов сборки, тестирования и утверждения.
Бернард
3
Что ж, по словам постоянных пользователей, каждая из этих сборок должна быть готова к выпуску. Но практика говорит об обратном, и обычно «сборки» могут служить любой цели, которая помогает подготовить программное обеспечение к запуску и протестировать его. Отладочные сборки, например. Или проверить, что ваши изменения не сломали ни одного из 16 миллионов тестов.
2
@delnan - А как насчет сборки, которая не прошла свои тесты? По стандартам непрерывной доставки, это сборка, но не готовая к выпуску :)
Одед
2

Компиляция выполняется компилятором, сборка может быть более сложным процессом.

Например. в C ++ для создания проекта необходим препроцессор (предварительная обработка исходных файлов); компилятор (компиляция исходных файлов); компоновщик (объединение всего в исполняемый файл - скомпилированный код, значки, строки, другие ресурсы вместе)

Таким образом, обычно компиляция - это перевод кода, написанного на одном языке, на другой (например, машинный код).

Slawek
источник