Mùi / usr / bin / ld: không thể tìm thấy -lcudart


12

Tôi là người mới sử dụng Ubuntu và sử dụng Ubuntu 14.04 64-bit. Tôi muốn makemột dự án sử dụng cudaopencvtôi đã gặp lỗi sau khi chạycmake . && 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

Đây là đầu ra của 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

libcudarttồn tại /usr/local/cuda/lib64và tôi cũng đã thêm vào Đường dẫn thư viện:

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

Đây là đầu ra của 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

Tôi nên làm gì ldtìm kiếm trong /usr/local/cuda/lib64đường dẫn để tìm libcudart?


bạn có thể hài lòng ls /usr/local/cuda/lib64?
AlexGreg

Câu hỏi tương tự cũng xảy ra với tôi. Tham khảo từ bài viết: [Debian biên dịch các ví dụ OpenCV với IPP: / usr / bin / ld: không thể tìm thấy -llibsvml.so coll2: error: ld trả về 1 trạng thái thoát.] [1] [1]: stackoverflow.com/questions/ 24234961 / Nhận
hellomzhxlp

Câu trả lời:


20

Tạo một liên kết tượng trưng đến libcudanơi ldđang tìm kiếm nó.

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

11

LD_LIBRARY_PATHđược sử dụng để sửa đổi hành vi của ldconfigvà các công cụ liên quan khi tìm kiếm các thư viện, tại thời điểm thực hiện.

Công ldcụ liên kết không sử dụng biến này. Nếu bạn muốn sử dụng một thư viện nằm trong thư mục không chuẩn, bạn phải sử dụng -Ltham số của lệnh, như sau:

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

Nếu bạn đã tải về và dự án hiện có và không biết làm thế nào để thay đổi Makefile hiện có (s) mà không vi phạm toàn bộ biên soạn, bạn có thể chạy làm theo cách sau:

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

Biến LDFLAGS (cũng có thể được xác định trong Makefile), được sử dụng để truyền các đối số cụ thể cho trình liên kết (ld ) khi được khởi chạy bởi các nội dung biên dịch.


1
Tôi đã nhận được ld: warning: cannot find entry symbol _start; not setting start addresskhi chạyld -lcuda -L/usr/local/cuda/lib64
Arash

@Arash: bạn đã cài đặt phiên bản libcuda được yêu cầu bởi porject bạn cố gắng biên dịch chưa?
Benoit

cùng một vấn đề như @Arash và vâng tôi có phiên bản chính xác của libcuda
Mohsin Bukhari

2

Bạn có thể tạo liên kết thay vì thêm đường dẫn:

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

tôi không có / usr / local / lib64 /, tôi có / usr / local / lib /
Arash

1

Tôi đã sửa cái này! Chuyển đến tệp thực hiện của bạn và thay đổi

/usr/local/cuda/

đến

/usr/local/cuda-7.0

(nếu đó là những gì bạn có)

Nó làm việc cho tôi


0

Đã giải quyết

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/

HOẶC sao chép tất cả các tệp tiêu đề từ /usr/lib/cuda-10.1/target/x86_64-linux/include sang / src / cpp /

Nó hoạt động với tôi trên Pop-OS 19.10

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.