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
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.
Nasıl linux LD_LIBRARY_PATH çevre deği...