Yazdığımız bir C kodunun çalıştırılabilir dosya haline gelirken arka planda hangi aşamalardan geçtiğini öğrenmek hem bakış açımızı hem de programlama bilgisini genişletecektir. gcc derleyicileri önce preprocessor'ü devreye sokar ardından compiler devreye girer ve ardından linker devreye girer ve çalıştırılabilir dosyamız elde edilmiş olur. Bu arada yazdığımız programın assembly karşılığını gcc bize üretmektedir.
Yazdığımız program basit bir "Hello World" programı ve şimdi bu hello.c programının üzerinden çalışmaya başlayalım;
- .c dosyaları kaynak kod dosyaları
- .i dosyaları ön işlemci çıktısının ardından oluşturulan dosya
- .o dosyaları compiler ardından oluşan object file dosyası
- main ise linkerin ardından oluşan çalıştırılabilir dosya
Kısaca ön işlemci # (diyez) ile başlayan ifadeler üzerinde değişiklik yapan programdır. Ön işlemci kaynak kod üzerinde değişiklik yapan bir süreçtir.
gcc -E main.c dediğimizde ön işlemci çalışır ve çıktıyı ekrana basar. Ben bu çıktıyı prepro.c' ye yönlendirdim. Şimdi vim ile bu dosyanın içeriğine bakalım;
Yukarıda ve aşağıda görüleceği üzere kaynak kodda linker için gerekli düzenlemeler yapılmış include' ların tam yol adresleri girilmiştir.
Compilation
Compilation yada compiler aşaması ise derleyici kaynak kodu link işlemleri dışında object dosyaya dönüştürme işlemlerine gerçekleştirdiği aşamadır. Derleme işlemi bittikten sonra linker' a gönderilir ve linker'dan sonra çalıştırılabilir makine koduna tamamiyle dönüştürülmüş olur.