Linux Sistem Programlama
  • Kapak
  • Önsöz
  • Sistem Programlamaya Giriş
    • Tarihçe
    • Standartlar
    • Sistem Çağrıları
    • API ve ABI
  • Linux Çekirdeği
  • Kabuk
  • Dosya Sistemi
  • Kullanıcı, Grup ve Erişim Yetkileri
  • Process Kavramı
  • Dosya İşlemleri
  • IO Modelleri
    • Senkron IO
    • Asenkron IO
  • Sinyaller
    • Temel Kavramlar
    • Sinyal Yakalama ve Gönderme
    • Signal-Safe Kavramı
    • Sinyal Kümeleri
    • Sinyal Bloklama
    • Sinyal İle Birlikte Veri Gönderimi
    • Sinyal ve Core Dump
    • RealTime Sinyaller
    • File Descriptor Üzerinden Sinyal İşleme
    • Genel Değerlendirme
  • Thread Kullanımı
    • Thread Oluşturma
    • Thread Türleri
    • Thread Sonlandırma
    • Mutex Kullanımı
    • SpinLock & Mutex Karşılaştırması
    • Futex
  • Semafor Kullanımı
    • Semafor ve Mutex Karşılaştırması
    • Semafor Türleri
    • Semafor Operasyonları
  • Shared Memory Kullanımı
  • Memory Mapped IO
  • Soket Kullanımı
    • Soket API
    • TCP Soketleri
    • UDP Soketleri
    • UNIX Soketleri
    • Birden Çok İstemciyle Çalışma
  • Timer Kullanımı
    • Basit Timer Yapıları
    • POSIX Timer API
    • Event Loop İçinde Kullanım
  • Daemon Oluşturma
  • Capabilities API
  • Paylaşımlı Kütüphaneler
    • Kütüphane Gereksinimi
    • Statik Kütüphaneler
    • Kod Referanslarının Ele Alınması
    • Paylaşımlı Kütüphanelerin Oluşturulması
    • Dinamik Yükleme
    • Derleme Zamanında Kütüphanelerin Aranması
    • Çalışma Zamanında Kütüphanelerin Aranması
    • Statik ve Dinamik Kütüphanelerin Beraber Kullanılması
    • Versiyon Yönetimi
  • Process'ler Arası Haberleşme
  • Memory Allocation
  • Memory Barriers
  • Hata Ayıklama Yöntemleri
    • GNU Debugger
    • Strace
  • GNU Build Sistemi Araçları
    • Make
    • Autoconf, Automake
  • Ek Bölümler
    • Derleyici Optimizasyonları
    • Clang ve LLVM
    • İçsel ve Anonim Fonksiyonlar
      • İçsel Fonksiyonlar
      • Anonim Fonksiyonlar
    • FreeTDS ile SqlServer Bağlantısı
  • Kaynak Dosyalar
Powered by GitBook
On this page

Was this helpful?

  1. Paylaşımlı Kütüphaneler

Kütüphane Gereksinimi

Uygulamalar temel bazı işlemlere sıklıkla ihtiyaç duymaktadır. Sık kullanılan bu rutinlerin, her seferinde uygulamaya özel yeniden yazılması yerine, bir defa yazılıp ayrı modüllerde makina kodu düzeyinde saklanması kullanım kolaylığı sağlayacaktır. Aynı kodun defalarca kullanılması hata riskini azaltmakta, kodun her seferinde derlenme zorunluluğunu ortadan kaldırmakta, ayrıca kaynak kodun gizlenerek taşınabilmesine olanak sağlamaktadır.

Örneğin, C standartları giriş/çıkış, yazı işleme ve matematiksel işlemlerle ilgili çok sayıda fonksiyon tanımlamıştır. Bu fonksiyonlar bir şekilde programcıya temin edilmelidir.

Standart fonksiyonların derleyici tarafından, içsel olarak, sağlanması bir yöntem olabilir. Örneğin derleyici sin fonksiyon çağrısıyla karşılaştığında, bu fonksiyonun standart bir fonksiyon olduğunu anlayıp, fonksiyona ilişkin makina kodunu direkt olarak kendisi yazabilir. Programcı açısından bu yöntem oldukça kullanışlı olmasına rağmen derleyiciyi yazanlar için bir takım zorluklar barındırmaktadır. Yeni bir fonksiyon eklendiğinde, çıkarıldığında veya değiştirildiğinde derleyicinin yeni bir versiyonu çıkarılmalıdır. Buna rağmen bazı standart ve standart olmayan fonksiyonlar derleyiciler tarafından eklenti olarak sağlanmaktadır. Örneğin GNU C derleyicisi çok sayıda eklenti sunmaktadır.

Kısıtlı bir kullanıma sahip bu yöntemde ihtiyaç duyulan tüm fonksiyonların derleyici tarafından sağlanması mümkün olmadığından, kütüphane kullanımı bir diğer alternatif olarak karşımıza çıkmaktadır.

Konumuzun temeli olan paylaşımlı kütüphanelerden önce, daha basit bir kullanıma sahip, statik kütüphaneleri kısaca inceleyelim.

PreviousPaylaşımlı KütüphanelerNextStatik Kütüphaneler

Last updated 5 years ago

Was this helpful?