"Usr / bin / ld: -lcudart नहीं मिल सकता है"


13

मैं Ubuntu के लिए नौसिखिया हूँ और Ubuntu 14.04 64-बिट का उपयोग कर रहा हूँ। मैं makeएक परियोजना का उपयोग करना चाहता हूं cudaऔर opencvमुझे दौड़ने के दौरान निम्नलिखित त्रुटि मिलीcmake . && make

Linking CXX executable ground_estimation
/usr/bin/ld: cannot find -lcudart
collect2: error: ld returned 1 exit status
make[2]: *** [ground_estimation] Error 1
make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2
make: *** [all] Error 2

इस का आउटपुट है ld -lcudart --verbose

attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/local/lib64/libcudart.so failed
attempt to open //usr/local/lib64/libcudart.a failed
attempt to open //lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //lib64/libcudart.so failed
attempt to open //lib64/libcudart.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/lib64/libcudart.so failed
attempt to open //usr/lib64/libcudart.a failed
attempt to open //usr/local/lib/libcudart.so failed
attempt to open //usr/local/lib/libcudart.a failed
attempt to open //lib/libcudart.so failed
attempt to open //lib/libcudart.a failed
attempt to open //usr/lib/libcudart.so failed
attempt to open //usr/lib/libcudart.a failed

libcudartमें मौजूद है /usr/local/cuda/lib64और मैंने पुस्तकालय पथ में भी जोड़ा:

echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:

यह आउटपुट है ls /usr/local/cuda/lib64:

libcublas_device.a   libcufftw.so.6.0.37    libnppi.so.6.0
libcublas.so         libcuinj64.so          libnppi.so.6.0.37
libcublas.so.6.0     libcuinj64.so.6.0      libnpps.so
libcublas.so.6.0.37  libcuinj64.so.6.0.37   libnpps.so.6.0
libcudadevrt.a       libcurand.so           libnpps.so.6.0.37
libcudart.so         libcurand.so.6.0       libnvblas.so
libcudart.so.6.0     libcurand.so.6.0.37    libnvblas.so.6.0
libcudart.so.6.0.37  libcusparse.so         libnvblas.so.6.0.37
libcudart_static.a   libcusparse.so.6.0     libnvToolsExt.so
libcufft.so          libcusparse.so.6.0.37  libnvToolsExt.so.1
libcufft.so.6.0      libnppc.so             libnvToolsExt.so.1.0.0
libcufft.so.6.0.37   libnppc.so.6.0         libOpenCL.so
libcufftw.so         libnppc.so.6.0.37      libOpenCL.so.1
libcufftw.so.6.0     libnppi.so

मुझे लगता है कि मुझे क्या करना चाहिए ldमें खोज /usr/local/cuda/lib64पथ को खोजने के लिए libcudart?


क्या आप कृपया कर सकते हैं ls /usr/local/cuda/lib64?
एलेक्सग्रेग

यही सवाल मुझसे भी हुआ। लेख से संदर्भ: [IPP के साथ OpenCV उदाहरणों को संकलित करना Debian: / usr / bin / ld: -llibsvml.so collect2: error: ld ने 1 निकास स्थिति नहीं पाई।] [1] [1]: stackoverflow.com/questions/ २४२३४ ९ ६१ /…
नरकोमजक्ल्प १५'१४

जवाबों:


22

libcudaजहां ldयह खोज रहा है, वहां एक प्रतीकात्मक लिंक बनाएं ।

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so

11

LD_LIBRARY_PATHldconfigनिष्पादन समय में पुस्तकालयों की तलाश में और संबंधित उपकरणों के व्यवहार को संशोधित करने के लिए उपयोग किया जाता है ।

ldलिंकर उपकरण इस चर का उपयोग नहीं करता। यदि आप एक गैर-मानक निर्देशिका में स्थित लाइब्रेरी का उपयोग करना चाहते हैं, तो आपको -Lकमांड के पैरामीटर का उपयोग करना होगा , जैसे:

ld -lcuda -L/usr/local/cuda/lib64

आप डाउनलोड की है और मौजूदा परियोजना और कैसे पूरे संकलन को तोड़ने के बिना मौजूदा Makefile (रों) संशोधित करने के लिए पता नहीं है, तो आप चला सकते हैं तो कर निम्नलिखित तरीके:

export LDFLAGS=-L/usr/local/cuda/lib64
make

चर LDFLAGS (जिसे मेकफाइल में भी परिभाषित किया जा सकता है), का उपयोग ldसंकलक घुसपैठों द्वारा लॉन्च किए जाने पर लिंकर ( ) में विशिष्ट तर्कों को पारित करने के लिए किया जाता है।


1
ld: warning: cannot find entry symbol _start; not setting start addressजब मुझे रन मिला तोld -lcuda -L/usr/local/cuda/lib64
Arash

@ अरश: आपने जिस संकलन का संकलन करने का प्रयास किया है, उसके द्वारा आपके द्वारा मांगी गई लिबाक्यूडा के संस्करण को स्थापित किया है?
बेनोइट

@ अर्श और हां में एक ही समस्या लिबाकुडा का सही संस्करण है
मोहसिन बुखारी

2

पथ जोड़ने के बजाय आप लिंक बना सकते हैं:

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/

मेरे पास / usr / लोकल / lib64 / नहीं है, मेरे पास / usr / लोकल / lib / है
Arash

1

मैंने यह तय किया! अपने मेकफाइल और बदलाव पर जाएं

/usr/local/cuda/

सेवा

/usr/local/cuda-7.0

(यदि ऐसा है तो आपको मिल गया है)

इसने मेरे लिए काम किया


0

हल किया

git clone https://github.com/inducer/pycuda.git
cd pycuda
sudo configure --cuda-root=/usr/lib/cuda-10.1

sudo ln -s /usr/lib/cuda-10.1/targets/x86_64-linux/include src/cpp/

या सभी हेडर फ़ाइलों को /usr/lib/cuda-10.1/targets/x86_64-linux/include से / src / cpp / पर कॉपी करें

इसने मेरे लिए पॉप-ओएस 19.10 पर काम किया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.