C programlama dili ile yazılmış programların bir çoğu çok
sayıda dosyaya bölünerek yazılmıştır.
Bu yöntemin en çok kullanıldığı yer birden fazla yazılımcının
olduğu projelerdir.
Her programcı kendine verilen işi yapan bir program parçası
oluşturur.
Projenin sonunda ise bu dosyalar birbirine entegre edilerek proje
tamamlanır.Bu konuyla ilgili bilmemiz gereken önemli iki nokta
vardır.Bunlar :
A)Arayüz ( İnterface ) :
Kütüphane dosyalarında olan makroların,fonksiyon imzalarının
ve sabitlerin oluşturduğu bir bütündür.
Bir yazılım ekibi , başkaları tarafından tasarlanılan modülü
kullanırlarken arka planda ne iş yaptığı ile ilgilenmezler.
İşte bu modüllerin birleştirilmesiyle ortaya program çıkar.
B)Implementasyon :
Örneğin bir projede siz kullanıcıda tarafından girilen sayının
faktöriyelini bulmakla yükümlüsünüz.
Bunu önceki kodlarımızda gördüğünüz gibi iki şekilde
yaptık.Yinelemeli ve iteratif bir şekilde.
Örneğin bir yinelemeli yöntem ile fonksiyonumuzu oluşturduk.Karşı
taraf bunu iteratif bir hale dönüştürse bile bizim kodumuzu
değiştirmemize gerek kalmaz.
Bu paradigmaya program to interface (arayüzler kullanılarak
programlama) denir.
Bu paradigmayı kullanan sistemlere gevşek sistem denir ve bir
sistem ne kadar gevşekse o kadar modülerdir.
Arayüz Ve İmplementasyon Farkı :
Arayüz içinde fonksiyonları ve verileri bulundurur.
Implementasyon ise o fonksiyonların arka planda ne iş yaptığına
bakılmasıdır.
Yukarıdaki saati kullanan kişi için önemli olan şey saatin
arayüzü yani saattir.
Kullanıcı dişlilerin nasıl çalıştığını yada gücünü
nereden aldığınu önemsemez.
.h Uzantılı Kütüphane Dosyalarının
Yapısı :
Bu dosyalar .c uzantılı kaynak dosyaları arasında ortak bir
bilginin tek bir noktada tanımlanmasını sağlar.Bunlara örnek
olarak şunları verebiliriz:
Program sabitleri,
Makro tanımları,
Fonksiyon imzaları.
Dikkat etmeniz gerek en önemli şeylerden birisi arayüzler
fonksiyonlara tanımlama yapılmamasıdır.Fonksiyonun sadece
imzasını belirtmeniz gerekir.Bu arada aynı şey .c uzantılı
dosyaların başka dosyalara dahil edilmemesinde de geçerlidir.
.c Uzantılı Kaynak Dosyalarının Yapısı
:
Bu dosyalar kütüphane dosyalarının içerdiği bütün
özelliklere sahiptir.Bu dosyalar genellikle
implementasyon,kütüphane dosyaları ise arayüz dosyaları olarak
adlandırılırlar.
Birden Fazla Dosyadan Oluşan C Programları
:
Daha öncede bahsettiğim gibi büyük programlar ekip çalışması
sonucu ortaya çıkarlar.Görev dağılımı yapılır ve her
yazılımcı kendine verilen modülü oluşturur.Bunlar
birleştirilere günümüz programları ortaya çıkar.
Büyük yazılımları tek bir dosya içerisinde yürütmek mümkün
olsa bile bu verimli bir yöntem değildir.
Birden
Fazla Dosyadan Oluşan C Programlarının Derlenmesi :
A)Komut Satırı Kullanarak Derleme :
Kullandığımız işletim sistemine göre komutlarla dosyanın
projemizin bulunduğu dizine gideriz.
Aşağıdaki kod yardımıyla klasördeki .c uzantılı dosyaların
derlenip .o uzantılı nesne dosyaları oluşturmasını sağlarız.
gcc –c *.c
Aşağıdaki kod yardımıyla oluşan nesne dosyalarını birbirine
bağlayıp bir program içinde çalıştırırız.
Gcc – faktöriyel.exe *.0 –lm
Yukarıdaki 3 2 komut verildikten sonra faktoriyel.exe komutu ile
programımızı çalıştırabiliriz.
B)Make Aracını Kullanarak Derleme :
Basit projeler komut satırı kullanılması sıkıntı
oluşturabilir.100 dosyadan oluşan bir projemiz var ise bunların
birbiriyle bağlantısı biraz zor olduğundan make aracını
kullanmak daha mantıklıdır.
Makefile Kavramı :
Make aracı arkaplanda oluşturduğu makefile adı verilen
konfigürasyon dosyası ile modüllerin birbirine bağlanmasını ,
derlenmesini gerçekleştirir.
Şimdi görsellerle olayı aydınlatmaya çalışacağım.2.resim makefile dosyasına aittir.
Hedef
( Target ) :
Hedefler make
komutunun birbirinden bağımsız olarak çalıştırabileceği
komut gruplarını listeler.
Yukarıdaki
makefile dosyasında 4 hedef bulunmaktadır.
Örneğin
yukarıdaki clean hedefini make clean komutu ile çalıştırırsak
bütün .o uzantılı dosyaların silinmesini emreder.
Kural
( Rule ) :
Belli bir hedef
çalıştırıldığında hangi dosyalara ihtiyaç duyulduğu
belirtilen alana kural denir.Eğer dosyaya ihtiyaç yoksa kural
alanı boş bırakılabilir.
Komut
( Command ) :
Kural bölümünde
dosyalar belirlendikten sonra o dosyalara neler yapılacağının ya
da dosya tanımlamazsa arka planda hangi işlerin gerçekleşeceğinin
belirtildiği alandır.
Bunlara ek
olarak ise bazı sabitlerde yukarıda görülmektedir.CC=gcc gibi.Bu
derlemenin nasıl yapacağının bizim seçmemiz için
yapılmıştır.Örneğin gcc değilde bcc olsaydı programımız
Borland C Compiler ile derlenecekti.
Make
Komutunun Kullanımı :
Şimdi hangisini
hedef alacaksam o komutu vereceğim.Ben terminalde make Makeornek
komutunu verdim.
Şimdi aşağıdaki
resimle konuyu kavramaya çalışalım.
Hiç yorum yok:
Yorum Gönder