SORU
22 Kasım 2010, PAZARTESİ


LD_LIBRARY_PATH vs LİBRARY_PATH

Basit bir C programı yapıyorum ve geçici olarak bir sistem geliştirme ve test için daha güncel bir sürümü ile paylaşılan kütüphane tarafından sağlanan bir yedek istiyorum.

LD_LIBRARY_PATH değişkeni ayarı denedim ama linker (ld) ile başarısız oldu:

/usr/bin/ld:- lyaml-cpp bulamıyor

O ld adama göre sayfa: çünkü çalışmam bekleniyor

Linker aşağıdaki arama kullanın bulmak için yollara paylaşılan gerekli kütüphaneler: ... yerel bir linker İçin, ortam değişkeni içeriğini ""... . LD_LIBRARY_PATH

Ben o zaman LİBRARY_PATH ve işe yaradı ayarı denedim.

GCC el kitabına göre:

Değeri LİBRARY_PATH virgülle ayrılan listesi. dizinler, YOL gibi. Ne zaman yerel bir derleyici olarak yapılandırılmış, GCC dizinler böylece belirtilen çalışır özel linker ararken dosyaları, eğer bunları kullanarak bulabilirsiniz. GCC_EXEC_PREFİX. Bağlama kullanarak GCC ayrıca bu dizin kullanır sıradan kitaplıklar için arama için -l (ama dizinler seçeneğini -L ilk gelen) ile belirtildi.

(GCC) manuel öneriyor, LİBRARY_PATH GCC ile bağlantı için çalışır.

Ama..

  • Gcc ile bağlantı beri neden ld. çağrıldığını, hata iletisi öneriyor?
  • Ne anlamı var iki değişken aynı hizmet olması amaç? Yok başka farklılıklar mı?

CEVAP
22 Kasım 2010, PAZARTESİ


LIBRARY_PATH dizinleri programınızı bağlı olması gereken kütüphaneleri içeren aramak için derleme önce KİK tarafından kullanılır.

LD_LIBRARY_PATH başarıyla derlenmiş sonra dizinleri kitaplıkları içeren aramak için program tarafından kullanılan ve bağlantılıdır.

EDİT: Aşağıda işaret edildiği gibi, kütüphaneler statik ya da paylaşılabilir. Eğer statik ise, o zaman kod programı içine kopyalanır ve programın derlenmiş ve Bağlantılı sonra kütüphane aramanıza gerek yok. Eğer kütüphane paylaşılan ise dinamik olarak programınızı bağlı olması gerekiyor ve o LD_LIBRARY_PATH devreye girer.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • midomansour

    midomansour

    19 EYLÜL 2009
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008

İLGİLİ SORU / CEVAPLAR