Kitaplık LD_LIBRARY_PATH içinde ayarlanan dizinde bulunmuyor


2

CUDA'nın kurulumunu doğrulamaya çalışıyorum ve bazı sorunlarla karşılaşıyorum. GPU hesaplama SDK ile birlikte gelen tüm örnekleri başarıyla oluşturdum. Ancak deviceQuery'yi çalıştırmayı denediğimde libcudart.so.4 bulunamadığını söylerken hata alıyorum.

Ancak:

echo $LD_LIBRARY_PATH

döner

/usr/local/cuda/lib64

Bu dizinin içinde bir dosya var:

libcudart.so.4

Kütüphanenin bulunmamasına neden olan başka ne tür hatalar olabilir?

Fran'in cevabı için EDIT:

  1. Evet, değişkeni dışa aktarıyorum
  2. Programın 64 bit olup olmadığından emin değilim, ancak 64 bitlik bir SDK kurulumunun parçası olarak geldi, bu yüzden varsayalım.
  3. Ldd çıktısı:

    #ldd deviceQuery
    linux-vdso.so.1 =>  (0x00007fff94ecc000)
    libcudart.so.4 => /usr/local/cuda/lib64/libcudart.so.4 (0x00007f2d4658a000)
    libcuda.so.1 => /usr/lib64/libcuda.so.1 (0x00007f2d45b1e000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000037f1200000)
    libm.so.6 => /lib64/libm.so.6 (0x00000037e5e00000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000037f0600000)
    libc.so.6 => /lib64/libc.so.6 (0x00000037e5600000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037e5a00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000037e5200000)
    librt.so.1 => /lib64/librt.so.1 (0x00000037e6200000)
    libz.so.1 => /lib64/libz.so.1 (0x00000037e6e00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000037e4e00000)
    

Bunu normal bir kullanıcı olarak çalıştırabileceğimi öğrendim, ancak bunu yapmak kullanıcının GPU'ya erişimi olmadığı için başarısız olmasına neden oluyor. Sudo ile çalıştırılması eksik dosya hatasına neden olur.

Koşu:

sudo ldd deviceQuery

Çıktının ikinci satırındaki eksik libcudart.so.4'ü onaylar.

Yanıtlar:


1
  1. LD_LIBRARY_PATHProgramı çalıştırdığınız kabuktan dışa aktardınız mı?

  2. Hem program hem de paylaşılan kitaplık 64-bit ikili dosyalar mı (veya her ikisi de 32-bit ikili dosyalar) mı?

  3. Çıktısı nedir ldd programnerede, programzamanında kütüphane bulamıyorum programdır?


Soruyu istediğin bilgilerle güncelledim.
— Godric Seer

Sürücülerin önyükleme sırasında başlatılmadığını öğrendim, bu yüzden kullanıcı için bir hata olduğunu düşündüm aslında doğruydu. Sürücüyü başlatmak için bir başlangıç ​​betiği oluşturmak sorunu çözdü ve doğru sonuç verdi.
— Godric Seer

1

Eğer kaynaktan bir yapı oluşturuyorsanız, --prefix = veya --libdir = üzerinden mevcut bir kütüphane yolunu kullanacak şekilde inşa etme seçeneğiniz vardır. Aksi takdirde şunları yapabilirsiniz:

  • / etc / profile içindeki LD_LIBRARY_PATH dizinine / usr / local / cuda / lib64 ekleyin
  • elle hareket ettirin (/ usr / local / örneğin) ve / usr / local / cuda ila / usr / local için bir bağlantı kurun
  • eksik libleri manuel olarak önceden yüklemek için LDPRELOAD kullanın.

LD_LIBRARY_PATH ile ilgili kısa bir hatırlatma - eklediğiniz yolların sayısı arttıkça, dinamik bağlayıcının bulmak için daha fazla bakması gerektiğini unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.