Olio-ohjelmointi
C++ Käännösprosessin Vaiheet

Tässä osiossa C++-ohjelman käännösprosessia havainnollistetaan GCC-kääntäjäkokoelman (GNU Compiler Collection) avulla. Esimerkeissä käytetään sen C++-käännöksiin tarkoitettua g++-komentoa, joka ohjaa sekä käännöstä että linkitystä. Samat perusvaiheet pätevät myös muihin kääntäjiin, kuten Clangiin ja Microsoftin MSVC:hen, mutta komennot ja valitsimet voivat poiketa toisistaan.

Lähdekoodi
(.cpp, .h)
↓
Esikäsittely
#include, #define jne.
↓
Esikäsitelty koodi
(.i, harvoin näkyvissä)
↓
Käännös (Compiler)
g++ -c → .o
↓
Objektitiedosto
(.o / .obj)
↓
Linkitys (Linker)
g++ main.o utils.o -o ohjelma
↓
Suoritettava ohjelma
./ohjelma tai ohjelma.exe
↓
Ohjelman suoritus
Käynnistys käyttöjärjestelmässä

Huomautus: käännös ja linkitys erikseen tai yhdessä

Seuraava komento kääntää lähdekooditiedostot x1.cpp ja x2.cpp objektitiedostoiksi x1.o ja x2.o:

g++ -c x1.cpp x2.cpp

Seuraava komento linkittää objektitiedostot yhdeksi suoritettavaksi ohjelmaksi:

g++ x1.o x2.o

Sama käännös ja linkitys saadaan aikaan yhdellä komennolla:

g++ x1.cpp x2.cpp

Tämä prosessi on hyvä ymmärtää, mutta kehitysympäristöt kuten Qt Creator käyttävät rakennustyökaluja, jotka kääntävät tavallisesti uudelleen vain muuttuneet lähdetiedostot sekä ne lähdetiedostot, jotka riippuvat muuttuneista otsikkotiedostoista. Muut objektitiedostot voidaan käyttää uudelleen, minkä jälkeen ohjelma linkitetään tarvittaessa uudelleen. Näin koko projektia ei tarvitse kääntää alusta jokaisen muutoksen jälkeen, mikä nopeuttaa kehitystyötä.

CMake, Make ja Ninja

CMake on työkalu, joka luo projektin CMakeLists.txt-tiedostossa olevien määritysten perusteella rakennustiedostot esimerkiksi Makelle tai Ninjalle. Make ja Ninja ovat rakennustyökaluja, jotka automatisoivat ohjelman käännöksen ja linkityksen. Ne seuraavat tiedostojen riippuvuuksia ja suorittavat vain muutosten edellyttämät rakennusvaiheet.

Voit lukea niistä lisää Peatutorin Qt-oppaasta osiosta Cmake,Make ja Ninja.



Toggle Menu