2012-09-02 13 views
14

Paylaşılan kitaplıklar ve gcc ile ilgili bir sorunum var. İlk olarak derlenmiş programımı çalıştıramadım çünkü şu hatayı alıyorum: paylaşılan kütüphaneleri yüklerken gcc hatası.gcc:/usr/local/lib içindeki bağlantılı kütüphaneler bulunamadı, ancak /etc/ld/so.conf.d/libc.conf listeleniyor mu?

Bazı arama yaptım ve bunun paylaşılan kitaplık bulunamadığı için olduğunu anladım. Bununla birlikte, paylaşılan kütüphanenin/usr/local/lib içinde olduğunu, AFAICT'nin paylaşılan kütüphaneler için yaygın olarak kullanılan bir dizin olduğunu ve gitmeden çalışacağını zaten tespit etmiştim.

Benim için çalıştı LD_LIBRARY_PATH, ayarlayabileceğini okuyun. Ancak, programımı çalıştırmak istediğimde bunu ayarlamak istemiyorum.

Daha ayrıntılı aramalar düzenleme ld.so.conf.

include /etc/ld.so.conf.d/*.conf 

ld.so.conf.d dizinde ilgilenmek bana libc.conf dahil dosyaların bir kapsamını göstermektedir: Bunda bakıldığında aşağıdaki vardı. Bu dosya içerisinde aşağıdaki:

/usr/local/lib 

Benim soru, neden el ld.so dosyasına/usr/local/lib içeren libc.conf kullandığı görülüyor LD_LIBRARY_PATH ayarlamak gerekiyor edilir?

Burada ilk önce yapılandırılması gereken bir şey var mı? Eksik olduğum derleme zamanında bir seçenek var mı? Ben derlemek için dikkat etmelidir

, bu benim problem veya normal davranışlarının bir belirtisi olup olmadığını, bilmiyorum kütüphaneye yolu belirtin zorunda kaldı.

Ayrıca, yazılımımı diğer sistemlere dağıttığımda bunun benim için bir sorun olduğunu da belirtmeliyim. Uygun yerlere koymalı ve ld.so.conf ile uğraşmadan programımı kurmam gerektiğini düşünürdüm. Bunun bu soru için uygun forumdur umut

, ben SSS okudum ve Tamam olduğunu düşünüyorum.

Şerefe.

+1

'/ usr/local/lib' adlı her değişikliğin ardından' ldconfig' çalıştırdınız mı? –

+0

ldconfig'in sadece bir dosyayı/usr/local/lib dosyasına koyarken değil, conf dosyalarını değiştirdikten sonra çalıştırılması gerektiğini düşündüm. – Metalskin

+1

Sanırım kendi sorumu yanıtladım, googled ldconfig ve güncellenmesi gereken bir önbellek var gibi görünüyor. Ben bir ldconfig -p yaptım ve kütüphane için grep'd ve o orada değil, bu yüzden problem, ldconfig'in yönettiği önbellek gibi görünüyor. Teşekkürler Basile! Şimdi kendi sorumu cevaplamalı mıyım? Bu alandaki diğer sorular, yeni lib'ler eklendiğinde ldconfig uygulamasının çalıştırılması gerektiğini açıklığa kavuşturmaz, conf dosyalarını değiştirdiğinizde çalıştığınızı okurlar. – Metalskin

cevap

18

Davandan özellikle (örneğin bazı paylaşılan kütüphanelerin her ek veya güncellemeden sonra) /usr/local/lib içindeki her güncellemeden sonra, ldconfig (root olarak) /etc/ld.so.conf yoluyla veya /etc/ld.so.conf.d/ altında yapılandırılan dizinleri her değişiklikten sonra çalıştırmalısınız.

İlgili konular