“ / 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?
AlexGreg

คำถามเดียวกันก็เกิดขึ้นกับฉันเช่นกัน อ้างอิงจากบทความ: [Debian รวบรวมตัวอย่าง OpenCV ด้วย IPP: / usr / bin / ld: ไม่พบ -llibsvml.so collect2: ข้อผิดพลาด: ld ส่งคืนสถานะทางออก 1] [1] [1]: stackoverflow.com/questions/ 24234961 / …
hellomzhxlp

คำตอบ:


22

สร้างลิงก์สัญลักษณ์ไปยังlibcudaตำแหน่งที่ldค้นหา

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

11

LD_LIBRARY_PATHใช้เพื่อปรับเปลี่ยนพฤติกรรมของldconfigและเครื่องมือที่เกี่ยวข้องเมื่อค้นหาไลบรารีในขณะดำเนินการ

ldเครื่องมือลิงเกอร์ไม่ได้ใช้ตัวแปรนี้ หากคุณต้องการใช้ไลบรารีที่อยู่ในไดเรกทอรีที่ไม่ได้มาตรฐานคุณจะต้องใช้-Lพารามิเตอร์ของคำสั่งดังนี้:

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

หากคุณได้ดาวน์โหลดและโครงการที่มีอยู่และไม่ทราบวิธีการปรับเปลี่ยน Makefile ที่มีอยู่ (s) โดยไม่ทำลายการสะสมทั้งคุณสามารถเรียกใช้ให้ด้วยวิธีต่อไปนี้:

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

ตัวแปร LDFLAGS (ซึ่งอาจกำหนดไว้ใน Makefile) ใช้เพื่อส่งอาร์กิวเมนต์เฉพาะไปยังตัวเชื่อมโยง ( ld) เมื่อเรียกใช้โดยการรวบรวมโครงสร้าง


1
ฉันได้ld: warning: cannot find entry symbol _start; not setting start addressเมื่อทำงานld -lcuda -L/usr/local/cuda/lib64
Arash

@Arash: คุณติดตั้ง libcuda รุ่นที่ร้องขอโดย porject ที่คุณพยายามรวบรวมหรือไม่?
เบอนัวต์

ปัญหาเดียวกับ @Arash และใช่ฉันมีรุ่นที่ถูกต้อง libcuda
Mohsin บุคอรี


1

ฉันแก้ไขสิ่งนี้! ไปที่ makefile ของคุณและเปลี่ยน

/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/ รวมถึง / src / cpp /

มันทำงานให้ฉันใน Pop-OS 19.10

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.