Jaka jest różnica między kodem kompilowanym a kodem wykonywalnym?

Odpowiedzi:

159

Kompilacja to czynność polegająca na przekształceniu kodu źródłowego w kod wynikowy.

Łączenie to czynność polegająca na połączeniu kodu obiektowego z bibliotekami w surowy plik wykonywalny.

Budowanie to sekwencja składająca się z kompilacji i linkowania, z możliwymi innymi zadaniami, takimi jak tworzenie instalatora.

Wiele kompilatorów obsługuje etap łączenia automatycznie po skompilowaniu kodu źródłowego.

Ignacio Vazquez-Abrams
źródło
19

Z Wikipedii :

W dziedzinie oprogramowania komputerowego termin „ kompilacja oprogramowania” odnosi się albo do procesu konwertowania plików kodu źródłowego na samodzielne artefakty oprogramowania, które można uruchomić na komputerze, albo do wyniku tego procesu. Jednym z najważniejszych etapów tworzenia oprogramowania jest proces kompilacji , w którym pliki kodu źródłowego są konwertowane na kod wykonywalny.

Podczas gdy w przypadku prostych programów proces składa się z jednego pliku, który jest kompilowany, w przypadku oprogramowania złożonego kod źródłowy może składać się z wielu plików i może być łączony na różne sposoby, aby utworzyć wiele różnych wersji.

codaddict
źródło
9

Kompilację można postrzegać jako skrypt, który składa się z wielu etapów - z których podstawowym jest kompilacja kodu. Inni mogą

  • prowadzenie testów
  • raportowanie (np. zasięg)
  • analiza statyczna
  • kroki przed i po kompilacji
  • uruchamianie niestandardowych narzędzi na niektórych plikach
  • tworzenie instalacji
  • etykietowanie ich i wdrażanie / kopiowanie do repozytorium
Gishu
źródło
7

Często mają na myśli to samo. Jednak „budowanie” może oznaczać również pełny proces kompilacji i linkowania całej aplikacji (w przypadku np. C i C ++), a nawet więcej, w tym m.in.

  • opakowanie
  • testowanie automatyczne (jednostkowe i / lub integracyjne)
  • generacja instalatora
  • instalacja / wdrożenie
  • tworzenie dokumentacji / strony
  • generowanie raportów (np. wyniki testów, pokrycie).

Istnieją systemy takie jak Maven , które uogólniają to pojęciem cyklu życia , który składa się z kilku etapów, wytwarzających różne artefakty, być może wykorzystując wyniki i artefakty z poprzednich etapów.

Péter Török
źródło
5

Z własnego doświadczenia powiedziałbym, że „kompilacja” odnosi się do konwersji jednego lub kilku plików źródłowych czytelnych dla człowieka na kod bajtowy (pliki obiektowe w C), podczas gdy „budowanie” oznacza cały proces kompilacji, łączenia i wszystkiego innego, co musi być zrobione z całego pakietu lub projektu.

chris
źródło
2

Większość ludzi prawdopodobnie używałaby tych terminów zamiennie. Możesz zobaczyć jeden niuans: kompilacja to tylko krok, w którym przekazujesz jakiś plik źródłowy przez kompilator (gcc, javac, cokolwiek).

Budowanie można było usłyszeć jako bardziej ogólny proces sprawdzania źródła, tworzenia folderu docelowego dla skompilowanych artefaktów, sprawdzania zależności, wybierania tego, co ma zostać skompilowane, uruchamiania automatycznych testów, tworzenia pliku tar / zip / ditributions, wypychania na ftp itp ...

phtrivier
źródło