0Pricing
C Academy · Ders

Statik ve Paylaşılan Kitaplıklar

Kitaplıkları derleyin ve bağlayın

Statik ve Paylaşılan Kitaplıklar, 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.

Kütüphane Nedir

Bir kütüphane, kaynak kodu her seferinde yeniden derlemeden farklı programlarda yeniden kullanabileceğiniz, derlenmiş nesne dosyaları bütünüdür.

C'de iki tür kütüphane vardır:

  • Statik kütüphaneler (.a), bağlama sırasında çalıştırılabilir dosyaya kopyalanır
  • Paylaşımlı kütüphaneler (.so), çalışma zamanında yüklenir

Nesne Dosyaları Oluşturma

Her iki tür de nesne dosyalarıyla başlar. Kaynak kodlarınızı her zamanki gibi -c ile derleyin.

Bu .o dosyaları, arşivleyicinin veya bağlayıcının paketleyeceği ham malzemedir.

gcc -c mathlib.c -o mathlib.o
gcc -c strlib.c -o strlib.o

Statik Kütüphane Oluşturma

ar arşivleyicisi, nesne dosyalarını bir .a arşivinde birleştirir. Geleneksel ad lib<name>.a biçimindedir.

Seçeneklerin anlamı şöyledir: r ekle, c gerektiğinde oluştur, s dizin yaz.

ar rcs libmymath.a mathlib.o strlib.o

Statik Kütüphaneyi Bağlama

Arama dizini için -L, kütüphane adı için -l kullanarak bağlayın; lib ön ekini ve .a son ekini kaldırın.

Gerekli kod çalıştırılabilir dosyaya kopyalanır ve bu dosya daha sonra bağımsız olarak çalışır.

gcc main.c -L. -lmymath -o app

Statik Bağlamanın Artıları ve Eksileri

Statik bağlama basit ve kendi kendine yeterlidir:

  • Çalıştırılabilir dosya her şeyi içerir; çalışma zamanı bağımlılığı yoktur
  • Ancak bir kopyayı içeren her program daha büyük ikili dosyalar anlamına gelir
  • Bir kütüphane hatasını düzeltmek, onu kullanan her programın yeniden bağlanmasını gerektirir

Konumdan Bağımsız Kod

Paylaşımlı kütüphaneler herhangi bir bellek adresine yüklenebilir; bu nedenle kodları konumdan bağımsız olmalıdır. -fPIC ile derleyin.

Bu işlem, sabit adresler yerine göreli adresleme kullanan kod üretir.

gcc -fPIC -c mathlib.c -o mathlib.o
gcc -fPIC -c strlib.c -o strlib.o

Paylaşımlı Kütüphane Oluşturma

.so dosyasını -shared ile oluşturun. Geleneksel biçim lib<name>.so şeklindedir.

Statik bir arşivden farklı olarak bu, yükleyicinin çalışma zamanında eşleyebileceği gerçek bir bağlı nesnedir.

gcc -shared mathlib.o strlib.o -o libmymath.so

Paylaşımlı Kütüphaneyi Bağlama

Bağlama işlemi statik durumla tamamen aynıdır. Fark, kodun kopyalanmaması; yalnızca bir başvurunun kaydedilmesidir.

Çalıştırılabilir dosya küçük kalır, ancak artık çalışma zamanında libmymath.so dosyasının bulunmasına bağlıdır.

gcc main.c -L. -lmymath -o app

Kütüphaneyi Çalışma Zamanında Bulma

Başlangıçta dinamik yükleyici, .so dosyası için standart yolları arar. Geçerli dizindeki bir kütüphane bu listede yer almaz.

Test amacıyla LD_LIBRARY_PATH (Linux) ile yükleyiciyi bu kütüphaneye yönlendirin.

LD_LIBRARY_PATH=. ./app

Paylaşımlı Kütüphanelerin Artıları ve Eksileri

Paylaşımlı kütüphaneler basitliği esneklikle değiş tokuş eder:

  • Bellekteki tek bir kopya birçok program tarafından paylaşılır; RAM ve disk alanından tasarruf edilir
  • .so dosyasındaki bir hata düzeltmesi, yeniden bağlama olmadan her programa yarar sağlar
  • Ancak .so dosyası eksik veya uyumsuzsa program başlatılamaz

Bu son risk, klasik "bağımlılık cehennemi" durumudur.

Bağımlılıkları İnceleme

Bir ikili dosyanın hangi kütüphanelere bağlandığını görmenize iki araç yardımcı olur:

  • ldd app, yükleyicinin çalışma zamanında ihtiyaç duyacağı paylaşımlı kütüphaneleri listeler
  • nm libmymath.a, bir kütüphanenin içindeki simgeleri (işlevleri) listeler

ldd çıktısında 'not found' görünüyorsa yükleyici, arama yolunda bu .so dosyasını bulamıyor demektir.

ldd app
nm libmymath.a

Kısa Kontrol

Seçeneği amacıyla eşleştirin.

Özet

Artık her iki tür kütüphaneyi oluşturup bağlayabilirsiniz:

  • Statik: ar rcs libX.a *.o, kod ikili dosyaya kopyalanır; kendi kendine yeterlidir ancak daha büyüktür
  • Paylaşımlı: -fPIC ile derleyin, -shared ile oluşturun; kod çalışma zamanında yüklenir
  • Her ikisini de -L ve -l ile bağlayın; paylaşımlı kütüphaneler LD_LIBRARY_PATH gibi bir çalışma zamanı arama yoluna ihtiyaç duyar

Artık ön işlemciden derlemeye kadar eksiksiz araç zincirine sahipsiniz.

Sıkça Sorulan Sorular

“Statik ve Paylaşılan Kitaplıklar” dersi ücretsiz mi?

Evet — “Statik ve Paylaşılan Kitaplıklar” 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.

“Statik ve Paylaşılan Kitaplıklar” dersinde ne öğreneceğim?

Kitaplıkları derleyin ve bağlayın 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.

“Statik ve Paylaşılan Kitaplıklar” 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

  1. Koşullu Derleme
  2. Çok Dosyalı Projeler
  3. Makefile'lar
  4. Statik ve Paylaşılan Kitaplıklar
← C Academy Sayfasına Dön