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

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

Что точно обозначают эти условия?

112
задан Community 25 January 2012 в 12:08
поделиться

6 ответов

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

Линковка - это акт объединения объектного кода с библиотеками в исходный исполняемый файл.

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

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

152
ответ дан 24 November 2019 в 02:51
поделиться

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

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

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

18
ответ дан 24 November 2019 в 02:51
поделиться

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

  • запущенными тестами
  • , сообщающими (например, покрытие )
  • статический анализ
  • шаги до и после сборки
  • запуск пользовательских инструментов над определенными файлами
  • создание установок
  • их маркировка и развертывание / копирование в репозиторий
9
ответ дан 24 November 2019 в 02:51
поделиться

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

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

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

7
ответ дан 24 November 2019 в 02:51
поделиться

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

5
ответ дан 24 November 2019 в 02:51
поделиться

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

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

2
ответ дан 24 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: