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.