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


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

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

6 94

6 ответов:

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

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

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

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

с Википедия:

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

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

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

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

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

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

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

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

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

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