CodeBlanks Logo Icon CodeBlanks

Statik ve dinamik

Statik ve dinamik bağlama arasındaki farkı öğrenirsin.

Statik bağlama

Statik bağlama (static linking), tüm kütüphane kodunun çalıştırılabilire gömülmesidir. Bağlayıcı, .a (arşiv) dosyalarından gereken nesneleri alır ve tek büyük çalıştırılabilire dahil eder.

Avantajı, sonucun bağımsız olmasıdır: hedef makinede kütüphane kurulu olması gerekmez. Dezavantajı, dosya boyutunun büyük olması ve güncelleme zorluğudur: kütüphane güncellenince tüm program yeniden bağlanmalıdır. C'de static anahtar sözcüğü ayrıca iç bağlantı (internal linkage) sağlar: bir değişken veya fonksiyon yalnızca kendi dosyasında görünür olur, diğer dosyalar tarafından kullanılamaz.

Dinamik bağlama

Dinamik bağlama (dynamic linking), kütüphane kodunun çalıştırılabilire gömülmediği; bunun yerine .so (shared object) dosyasına bir başvurunun bırakıldığı yöntemdir. Program çalıştırılınca, yükleyici (loader) kütüphaneyi belleğe yükler ve sembolleri çözümler.

Avantajı, küçük dosya boyutu ve kolay güncellemedir: kütüphane güncellenince program yeniden bağlanmaz. Dezavantajı, hedef makinede kütüphanenin kurulu olması gerekmesidir. extern anahtar sözcüğü, dış bağlantı (external linkage) sağlar: sembol diğer dosyalar tarafından görülebilir. Dinamik bağlama bu dış sembolleri çalışma zamanında çözümler.

Uygulama İç ve dış bağlantı

static int internal_counter = 5; tanımla (iç bağlantı). int external_counter = 10; tanımla (dış bağlantı). int main(void) yaz ve printf("Dahili: %d\n", internal_counter) ve printf("Harici: %d\n", external_counter) ile ikisini yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// dahili değişken tanımla (static)
// harici değişken tanımla
// main'de ikisini yazdır

Örnek çözüm

main.c
#include <stdio.h>

static int internal_counter = 5;
int external_counter = 10;

int main(void) {
    printf("Dahili: %d\n", internal_counter);
    printf("Harici: %d\n", external_counter);
    return 0;
}

Beklenen çıktı

Dahili: 5
Harici: 10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Statik bağlama ne üretir?

  • Paylaşılan kütüphane
  • Kaynak dosya
  • Sadece başlık dosyası
  • Tek büyük çalıştırılabilir Doğru cevap

Açıklama: Statik bağlama tüm kodu tek çalıştırılabilire gömer.

2 İç bağlantı anahtar sözcüğünü tamamla

Soru
____ int internal_counter = 5;
Cevap
static int internal_counter = 5;

Açıklama: static, değişkeni yalnızca kendi dosyasında görünür kılar.

3 Bağlama türünü eşle

Kavram Anlamı
Statik Kod gömülür
Dinamik .so yüklenir
static anahtar İç bağlantı
extern anahtar Dış bağlantı

Uzman bölümündeki tüm dersler