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

Ответы:

159

Компиляция - это процесс превращения исходного кода в объектный код.

Связывание - это процесс объединения объектного кода с библиотеками в необработанный исполняемый файл.

Сборка - это последовательность, состоящая из компиляции и компоновки с, возможно, другими задачами, такими как создание установщика.

Многие компиляторы автоматически обрабатывают этап связывания после компиляции исходного кода.

Игнасио Васкес-Абрамс
источник
19

Из википедии :

В области компьютерного программного обеспечения термин « сборка программного обеспечения» относится либо к процессу преобразования файлов исходного кода в отдельные программные артефакты, которые могут быть запущены на компьютере, либо к результату этого. Одним из наиболее важных этапов сборки программного обеспечения является процесс компиляции, при котором файлы исходного кода преобразуются в исполняемый код.

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

codaddict
источник
9

Сборку можно рассматривать как сценарий, который состоит из множества этапов, основным из которых будет компиляция кода. Другие могли быть

  • запущенные тесты
  • отчетность (например, охват)
  • статический анализ
  • шаги до и после сборки
  • запуск пользовательских инструментов над определенными файлами
  • создание установок
  • маркировка их и развертывание / копирование в репозиторий
Gishu
источник
7

Часто они означают одно и то же. Однако «сборка» может также означать полный процесс компиляции и связывания всего приложения (в случае, например, C и C ++), или даже больше, включая, среди прочего

  • упаковка
  • автоматическое (модульное и / или интеграционное) тестирование
  • поколение установщика
  • Установка / развертывание
  • документация / создание сайта
  • формирование отчета (например, результаты тестирования, охват).

Существуют системы, подобные Maven , которые обобщают это с помощью концепции жизненного цикла , который состоит из нескольких этапов, производящих различные артефакты, возможно, с использованием результатов и артефактов с предыдущих этапов.

Петер Торок
источник
5

Исходя из своего опыта, я бы сказал, что «компиляция» относится к преобразованию одного или нескольких читаемых человеком исходных файлов в байтовый код (объектные файлы в C), в то время как «построение» обозначает весь процесс компиляции, компоновки и всего остального, что необходимо. сделано для всего пакета или проекта.

Крис
источник
2

Большинство людей, вероятно, использовали бы эти термины как синонимы. Вы могли заметить один нюанс: компиляция - это всего лишь шаг, на котором вы передаете некоторый исходный файл через компилятор (gcc, javac, что угодно).

Сборку можно было услышать как более общий процесс проверки источника, создания целевой папки для скомпилированных артефактов, проверки зависимостей, выбора того, что нужно скомпилировать, запуска автоматических тестов, создания tar / zip / ditributions, перехода на ftp. , и т.д...

phtrivier
источник