Jaka jest różnica między budowaniem a kompilacją?

Odpowiedzi:

34

Kompilacja jest częścią procesu kompilacji.

Proces kompilacji może obejmować testowanie, pakowanie i inne działania oprócz kompilacji.

Oded
źródło
19

„Budowanie” jest dość ogólnym terminem i może odnosić się do wszystkiego, co jest potrzebne, aby przejść od edytowalnego materiału źródłowego (kod źródłowy, skrypty, surowe pliki danych itp.) Do dostarczanego oprogramowania. Budowanie może (i zwykle wymaga) kilku etapów, takich jak wstępne przetwarzanie, kompilowanie, łączenie, konwertowanie plików danych, uruchamianie automatycznych testów, pakowanie itp.

„Kompilacja” jest bardziej szczegółowa i prawie niezmiennie odnosi się do procesu, który pobiera kod źródłowy jako dane wejściowe i generuje coś, co można uruchomić, zwykle kod maszynowy dla maszyny fizycznej lub wirtualnej lub kod źródłowy w innym języku.

tdammers
źródło
9

Terminy te są często używane zamiennie, ale różnicowałbym je w następujący sposób:

  • Budowanie odbywa się podczas przygotowywania aplikacji do wydania, która obejmuje kompilację, pakowanie, testowanie itp.
  • Kompilacja odbywa się w dowolnym momencie, w którym kompilator uczestniczy w tłumaczeniu kodu języka programowania na kod maszynowy.

Zatem kompilacja jest tak naprawdę podzbiorem budynku.

Bernard
źródło
1
„Budowanie odbywa się podczas przygotowywania aplikacji do wydania” - nie mów, że tłum ciągłej integracji;) Lub jakikolwiek inny zapalony użytkownik automatycznych kompilacji.
1
@delnan: Uzgodniony. Ciągła integracja tworzy wiele „kompilacji” przez cały okres użytkowania aplikacji. Jednak dowolne lub wszystkie z tych kompilacji można wykorzystać w przygotowaniu do publicznego wydania. Zależy to od procesów kompilacji, testowania i zatwierdzania.
Bernard,
3
Cóż, według tłumu ciągłego dostarczania, każda z tych wersji powinna być gotowa do wydania. Ale praktyka mówi inaczej i generalnie „kompilacje” mogą służyć dowolnemu celowi, któremu pomaga przygotowanie oprogramowania do uruchomienia i przetestowanie. Na przykład kompilacje debugowania. Lub sprawdzanie, czy twoje zmiany nie przełamały żadnego z 16 milionów testów.
2
@delnan - Co z kompilacją, która nie przejdzie testów? Zgodnie ze standardami ciągłej dostawy jest to kompilacja, ale nie jest gotowa do wydania :)
Oded
2

Kompilacja odbywa się za pomocą kompilatora, kompilacja może być bardziej złożonym procesem.

Na przykład. w C ++ do stworzenia kompilacji projektu potrzebujesz preprocesora (wstępne przetwarzanie plików źródłowych); kompilator (kompilacja plików źródłowych); linker (łączenie wszystkiego w plik wykonywalny - skompilowany kod, ikony, ciągi znaków, inne zasoby razem)

Ogólnie kompilacja polega na tłumaczeniu kodu napisanego w jednym języku na inny (np. Kod maszynowy).

Sławek
źródło