Statik ve dinamik
- C kursu
- Uzman
- Ders 34/47
- 5 dk
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
#include <stdio.h>
// dahili değişken tanımla (static)
// harici değişken tanımla
// main'de ikisini yazdırÖrnek çözüm
#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
____ int internal_counter = 5;
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ı |