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

Я всегда использую термины компиляции и сборки взаимозаменяемы.

Что именно означают эти термины?

Ответ 1

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

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

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

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

Ответ 2

От wikipedia:

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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