SORU
28 NİSAN 2010, ÇARŞAMBA


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
28 NİSAN 2010, ÇARŞAMBA


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)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • How It Should Have Ended

    How It Shoul

    5 Mart 2007
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011