Linkerler Hakkında

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Theholiqan
    Theholiqan's avatar
    Kayıt Tarihi: 28/Temmuz/2012
    Erkek

    Şimdi benim merak ettiğim konu şu biz programı yazdık diyelim obje oluştü (linux için .o windows için .obj) peki link leme işleminde dışarıdaki belli şeylere bağlama yapılıyor merak ediyorum lib dosyalarında .a yada.lib yada bir diğer obje ile linkleme yapılırken sadece gerekli fonksiyonlar mı alınıyor yoksa durum daha mı farklı

    Teşekkür ederim


    Bize çağ dışı diyorlar Doğrudur; Çağlar açtık, çağlar kapattık Çağlar bizden geri!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Linker ayarlarına bağlı. Harici bağlamada default olarak kullanılmayan fonksiyonlar çıkarılır. Fakat misal VS'da debug mode'da ise linker optimizasyonu default olarak kapalı olduğundan tutar. Release mode'da ise linker optimizasyonu default olarak açıktır, tutmaz. Bu sebeple linker ayarlarından optimizasyon için gerekli parametreleri eklemen gerekebilir. Hangi linker'ı kullanıyorsan dokümantasyonundan optimizasyon için gereken parametreleri öğrenebilirsin.


    λ
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Hocam gerekli gereksiz herşeyiyle gelir. statik çağrılanlar ok ama dinamik olarak neye ihtiyaç duyulacağını tam bilemez compiler. onun için heryşeyiyle gömer.

    HolyOne tarafından 25/Ağu/12 11:52 tarihinde düzenlenmiştir

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Evet. Daha detaylı açıklamak gerekirse static linking'de herhangi bir optimizasyon yapılmamış ise kütüphanedeki fonksiyon/datalar doğrudan alınır. Bu da farklı ortamlarda çalışacağından emin olmanı sağlar. Aynı zamanda static linking'te kod senin yazılımına dahil olduğundan daha performanslı çalışır. Fakat dosyanı fazlasıyla şişirir. Bundan kurtulmak ise linker'ın yeteneklerine ve kütüphanenin durumuna bağlıdır.

    Zira kullanılan kütüphane fonksiyonları kütüphane içerisinde farklı fonksiyonlara, dataya ihtiyaç duyuyorsa onların da dahil edilmesi gerekir ki, eğer onlar da statik olmayan ve bununla beraber iyi yazılmamış fonksiyonlar ise ve kütüphane fonksiyonları arasındaki bağımlılık varsa o zaman optimize etmeye kalksan da pek değişen bir şey olmayacağı gibi linker'ın yeteneklerine göre bu konuda ciddi sorunlar yaşayabilirsin.

    Compiler kod bünyesindeki kullanılmayan static fonksiyonları çıkarabilir. Fakat harici bağlama optimizasyonu ancak linker tarafından yapılabilir. Kullanılmayan fonksiyonlar çıkarılacak ise dediğim üzere kütüphanenin durumunu ve linker'ın yeteneklerini göz önüne alman lazım. Görece bir durum. Fakat günümüzde bu konuda standart kütüphaneler ve linkerlar konusunda pek sıkıntı yaşayacağını sanmıyorum. Optimizasyona gidebilirsin. Fakat yaptığın işin de bilincinde olursan ayakların yere sağlam basar.

    Dynamic linking'te ise dll kullanmak yazılımının boyutunu önemsiz miktarda etkiler ama dll'in load edilmesi ve zıplama aşamaları vs. performansı düşürür. Ayrıca standart durumda kalmayan, değişmesi muhtemel herhangi bir bir dll dosyasına bağımlı kalırsan static linking'teki gibi kodunun çalışacağından emin olamazsın.

    Bu sebeple şartları iyi değerlendirmen lazım.


    λ
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Theholiqan
    Theholiqan's avatar
    Kayıt Tarihi: 28/Temmuz/2012
    Erkek

    Hm teşekkür ederim bunu hep merak ediyordum ancak şöyle bir bakım dedim kimse bahsetmemiş


    Bize çağ dışı diyorlar Doğrudur; Çağlar açtık, çağlar kapattık Çağlar bizden geri!
Toplam Hit: 1063 Toplam Mesaj: 5