Kompiliavimo klaida yra klaida kuriant kompiuterio kalbos mašininio kodo failą. Daugelis kompiuterių kalbų sukompiliuoja savo šaltinio kodą į mašininio kodo failus, kol programas galima sukurti ar vykdyti. Dažniausias kompiliavimo klaidų tipas yra pagrindinė sintaksės klaida; viena nedidelė klaida gali sukelti daug problemų su kodu.
Dažniausios į objektą orientuotos programavimo kalbos C++ ir Java® tam tikra forma naudoja kompiliavimą. Tai labai skiriasi nuo interpretuojamų kalbų, kurios programos vykdymo metu naudoja neapdorotą šaltinio kodą. Kalba nebūtinai turi būti orientuota į objektą, kad ją būtų galima kompiliuoti; Pavyzdžiui, C++ gali būti struktūrizuotas naudojant objektinį arba procedūrinį programavimą.
Dažniausia kompiliavimo klaidų priežastis yra sintaksės klaida. Sintaksės klaidos yra neapdoroto šaltinio kodo formos klaidos, dažniausiai atsirandančios dėl tam tikro kompiuterio kalbos principų pažeidimo. Šios klaidos gali būti tokios paprastos kaip kabliataškio pamiršimas kodo eilutės pabaigoje arba tokios sudėtingos, kaip neteisingas masyvo inicijavimas. Paprastai šias klaidas rasti ir diagnozuoti nėra labai sunku; dauguma kompiliatorių rodo klaidas, kai jos aptinkamos, ir neleidžia formuoti mašininio kodo, kol klaidos nėra ištaisytos. Tačiau skirtingose kalbose naudojami skirtingi kompiliatoriai, todėl gali būti, kad tam tikros rūšies kompiliavimo klaida gali būti vienoje kalboje, bet ne kitoje.
Priklausomai nuo kalbos ir naudojamo kompiliatoriaus, viena kompiliavimo klaida gali rodyti tiek klaidų. Pavyzdžiui, pamiršus kabliataškį eilutės pabaigoje, kai to reikalauja kalba, gali atsirasti analizavimo klaidų, nes kompiliatorius nežino, kada konkreti eilutė turi baigtis. Ši analizės klaida gali pasireikšti kaip daug kompiliavimo klaidų, todėl gali atrodyti, kad vietoje vienos mažos rašybos klaidos staiga atsiranda siaubingų kodo problemų. Apskritai, kruopštus kompiuterio kalbos taisyklių laikymasis gali užkirsti kelią tokioms klaidoms. Taip pat, jei staiga atsiranda kompiliavimo klaidų, patyręs programuotojas paprastai gali nuspręsti, kad daugumą jų sukėlė viena nedidelė klaida.
Dažnas pradedančiųjų programuotojų klaidingas supratimas yra tas, kad kompiliavimo klaida sugadins kompiuterį, ir taip niekada nėra. Kompiliavimo klaidos apsiriboja kompiliatoriais, o mašininio kodo kūrimas retai sukelia problemų visai kompiuterinei sistemai. Nė viena programa nėra patikima, įskaitant kompiliatorių, tačiau tikimybė, kad tik sukompiliavus kodą ar susidarius kompiliavimo klaidai sukels problemų visame kompiuteryje, yra labai maža. Ištaisius visas kompiliavimo klaidas, yra didelė tikimybė, kad programa veiks sklandžiai, kaip ir buvo numatyta.