Birden Çok Dosyayı Derleme
Çok dosyalı bir program oluşturun.
Birden Çok Dosyayı Derleme, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.
Kaynaktan Programa
Birden çok dosyadan oluşan C kaynak kodunu çalıştırılabilir bir dosyaya dönüştürme iki aşamada gerçekleşir: derleme ve bağlama.
Her .c dosyası ayrı ayrı bir nesne dosyasına derlenir. Ardından bağlayıcı, nesne dosyalarının tümünü birleştirir, aralarındaki başvuruları çözümler ve tek bir çalıştırılabilir program oluşturur.
Tek Komutla Derleme
En basit yaklaşım, tüm kaynak dosyalarını aynı anda gcc'ye vermektir. Derleyici her birini oluşturur, ardından bunları otomatik olarak bağlar.
-o seçeneği, çıktı programının adını belirtir. Tüm .c dosyalarını listeleyin; başlık dosyaları #include aracılığıyla eklenir ve burada listelenmez.
gcc main.c math_utils.c -o appAyrı Derleme
Daha büyük projelerde her dosyayı -c ile bir nesne dosyasına derleyin. Bu işlem bir .o dosyası oluşturur ancak bağlama yapmaz.
Ayrı derleme sayesinde yalnızca bir kaynak dosyası değiştiğinde sadece o dosyayı yeniden derlemeniz gerekir; bu da büyük derlemeleri hızlandırır.
gcc -c main.c /* produces main.o */
gcc -c math_utils.c /* produces math_utils.o */Bağlama Aşaması
Nesne dosyalarınız hazır olduğunda bunları bir çalıştırılabilir dosyaya bağlayın. Burada gcc, nesneleri birleştirip dosyalar arası sembolleri çözümleyen bağlayıcı görevi görür.
Bu kez -c kullanmayın; çünkü başka bir nesne dosyası değil, son programı istiyoruz.
gcc main.o math_utils.o -o appBağlayıcı Ne Yapar
Bağlayıcı, bir sembolün her kullanımını onun tanımıyla eşleştirir.
main.o, add'i çağırdığında bağlayıcı math_utils.o içinde tanımlanan add'i bulur ve ikisini birbirine bağlar. Ayrıca programınızın ihtiyaç duyduğu standart kütüphane kodunu da ekler.
Tanımsız Başvuru Hataları
Bağlama sırasında bir nesne dosyasını unutursanız bağlayıcı bir tanım bulamaz ve tanımsız başvuru bildirir.
Bu, derleme hatası değil, bağlama zamanı hatasıdır: her dosya başarıyla derlenmiştir, ancak son komutta gereken bir tanım eksiktir.
gcc main.o -o app
/* undefined reference to `add' */
/* fix: include math_utils.o */Yararlı Uyarı Seçenekleri
Her zaman uyarıları etkinleştirerek derleyin. -Wall ve -Wextra, olası hataları erkenden ortaya çıkarır.
-std=c11 eklemek, derleyiciler arasında davranışın öngörülebilir olması için bir dil standardı seçer. Bu seçenekler ister tek adımda ister ayrı ayrı derleme yapın, çalışır.
gcc -Wall -Wextra -std=c11 -c main.c
gcc -Wall -Wextra -std=c11 -c math_utils.c
gcc main.o math_utils.o -o appEkleme Yolları
Başlık dosyaları başka bir dizinde bulunduğunda, -I ile derleyiciye nereye bakacağını bildirin.
Örneğin -Iinclude, arama yoluna bir include/ klasörü ekler; böylece #include "math_utils.h", farklı bir klasörden bile çözümlenir.
gcc -Iinclude -c src/main.c -o build/main.oYeniden Derleme Neden Önemlidir
Ayrı derleme, yalnızca bir dosya değiştiğinde büyük avantaj sağlar. Yalnızca o dosyanın nesnesini yeniden derler, ardından yeniden bağlarsınız.
Ancak bir başlık dosyasını düzenlerseniz onu içeren her kaynak dosyası yeniden derlenmelidir; çünkü başlık dosyasının metni bu dosyaların her birinin parçasıdır.
/* edited math_utils.c only */
gcc -c math_utils.c
gcc main.o math_utils.o -o appmake ile Otomasyon
Komutları elle yazmak zamanla yorucu olur. Bir Makefile, kuralları kaydeder ve yalnızca değişenleri yeniden oluşturur.
Bu basit örnek iki nesneyi app içinde birbirine bağlar; make, neyin yeniden derleneceğine karar vermek için dosya zaman damgalarını izler.
app: main.o math_utils.o
gcc main.o math_utils.o -o app
main.o: main.c math_utils.h
gcc -c main.cDerlemenin Tam Özeti
Uyarılar açıkken, nesne dosyalarından tamamlanmış bir programa kadar küçük bir projenin tüm akışı şöyledir.
Her kaynağı derleyin, ardından nesneleri bağlayın. Baştan sona doğru çalıştığını doğrulamak için sonucu çalıştırın.
gcc -Wall -c main.c
gcc -Wall -c math_utils.c
gcc main.o math_utils.o -o app
./appHızlı Kontrol
Birden çok dosyalı derleme sürecindeki anlayışınızı kontrol edin.
Özet
Her .c dosyasını -c ile bir nesneye derlemeyi, ardından nesneleri bir programa bağlamayı öğrendiniz. Uyarılar ve ekleme yolları için -Wall ve -I kullanın.
Tanımsız başvurular, bağlama zamanında eksik bir nesne olduğu anlamına gelir. make gibi araçlar yalnızca değişenleri yeniden oluşturma işini otomatikleştirir.
Sıkça Sorulan Sorular
“Birden Çok Dosyayı Derleme” dersi ücretsiz mi?
Evet — “Birden Çok Dosyayı Derleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.
“Birden Çok Dosyayı Derleme” dersinde ne öğreneceğim?
Çok dosyalı bir program oluşturun. C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Birden Çok Dosyayı Derleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Başlık ve Kaynak Dosyaları
- Ekleme Koruyucuları
- extern ve Bağlama
- Birden Çok Dosyayı Derleme