kütüphane yolu tercih belirtmek için nasıl?g :
C programı g
ld
kullanarak hazırlıyorum. Bağlantı sırasında kullanılacak istiyorum .so
bir kütüphane var. Ancak, aynı adı taşıyan bir kütüphane /usr/local/lib
, var ve ld
belirtme ben doğrudan bir kütüphane seçmektir. Bu durumu nasıl düzeltebilirim?
Aşağıdaki örnekler için, benim kütüphane /my/dir/libfoo.so.0
dosya. Denedim hiç bir şeyi çalışmıyor:
- g emrim
g -g -Wall -o my_binary -L/my/dir -lfoo bar.cpp
/my/dir
benim başına veya sonuna$PATH
TR` değişken ekleme- g için bir argüman olarak ekleme
/my/dir/libfoo.so.0
CEVAP
Yeni kütüphane 14 ** (Mac biraz farklı adı var...) bulunduğu yolu ekleyin
Çözüm -L/my/dir -lfoo
seçenekleri kullanarak, çalışma zamanında LD_LIBRARY_PATH kütüphane konumu göstermek için kullanın.
YA
Gcc ile rpath seçeneği linker için kullanma - kütüphane arama yolu zamanı, kullanılacak standart dir bakarak (gcc option) yerine:
-Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH)
Bu geçici bir çözüm için iyidir. Linker ilk standart dizinlerin içine bakmadan önce kitaplıkları için LD_LIBRARY_PATH arar.
Eğer kalıcı olarak LD_LIBRARY_PATH güncellemek istiyorsanız Eğer doğru değilse komut satırında anında olabilir
LD_LIBRARY_PATH=/some/custom/dir ./fooo
Kütüphaneler linker kullanarak ilgili (örnek) bildiği şeyi kontrol edebilirsiniz:
/sbin/ldconfig -p | grep libpthread
libpthread.so.0 (libc6, OS ABI: Linux 2.6.4) => /lib/libpthread.so.0
Ve uygulamanın kullandığı kontrol edebilirsiniz:
ldd foo
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7f9e000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7e6e000)
librt.so.1 => /lib/librt.so.1 (0xb7e65000)
libm.so.6 => /lib/libm.so.6 (0xb7d5b000)
libc.so.6 => /lib/libc.so.6 (0xb7c2e000)
/lib/ld-linux.so.2 (0xb7fc7000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c2a000)
libz.so.1 => /lib/libz.so.1 (0xb7c18000)
Nasıl java ayarlamak için.kütüphane.Tu...
Nasıl Besteci belirtmek için yükleme y...
Nasıl Android Studio için kütüphane pr...
Nasıl bir modül almak için tam yolu ve...
Nasıl wget ile konumunu belirtmek için...