Kompilator to program, którego zadaniem jest przetworzenie kodu źródłowego (np. C/C++/Pascal) do postaci wynikowej. W typowym łańcuchu budowania efektem kompilacji jest plik obiektowy (często z rozszerzeniem .obj w środowiskach Windows lub .o w systemach uniksowych). Taki plik zawiera kod maszynowy lub kod bliski maszynowemu oraz informacje potrzebne do późniejszego łączenia (np. symbole i relokacje).
Odpowiedź "kompilator." pasuje do opisu, bo to właśnie kompilator wykonuje tłumaczenie z poziomu języka wysokiego na postać, którą komputer może dalej przetwarzać w procesie budowania.
Pozostałe odpowiedzi dotyczą innych etapów lub innych zastosowań:
- "konsolidator." – w praktyce oznacza narzędzie do konsolidacji/łączenia modułów; nie tłumaczy kodu źródłowego, tylko spaja wyniki wcześniejszych kompilacji.
- "linker." – linker (konsolidator) łączy pliki obiektowe oraz biblioteki, rozwiązuje odwołania do symboli i tworzy plik wykonywalny lub bibliotekę. Nie jest narzędziem tłumaczącym źródła na instrukcje.
- "debugger." – debugger służy do diagnozowania działania programu: zatrzymywania na breakpointach, podglądu zmiennych, analizy stosu wywołań. Nie tworzy plików OBJ jako produktu tłumaczenia.
Warto pamiętać o typowej kolejności: pliki źródłowe → (kompilator) pliki obiektowe → (linker/konsolidator) program. To rozróżnienie często pojawia się w zadaniach egzaminacyjnych.