„/ Usr / bin / ld: nie można znaleźć -lcudart”

13

Jestem nowicjuszem w Ubuntu i używam Ubuntu 14.04 64-bit. Chcę makeprojekt, który używa cudai opencvdostałem następujący błąd podczas uruchamianiacmake . && 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

To jest wynik działania 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

libcudartistnieją /usr/local/cuda/lib64i dodałem również do ścieżki biblioteki:

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

To jest wynik 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

Co powinienem zrobić, ldszukając /usr/local/cuda/lib64ścieżki, aby znaleźć libcudart?

Wysypka
źródło
można zadowolić ls /usr/local/cuda/lib64?
AlexGreg
To samo pytanie przydarzyło mi się również. Odniesienie z artykułu: [Debian kompiluje przykłady OpenCV z IPP: / usr / bin / ld: nie można znaleźć -llibsvml.so collect2: błąd: ld zwrócił 1 status wyjścia.] [1] [1]: stackoverflow.com/questions/ 24234961 /…
hellomzhxlp

Odpowiedzi:

22

Utwórz symboliczny link do miejsca, w libcudaktórym ldje wyszukuje.

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
AlexGreg
źródło
11

LD_LIBRARY_PATHsłuży do modyfikowania zachowania ldconfigpowiązanych narzędzi podczas wyszukiwania bibliotek w czasie wykonywania.

ldNarzędzie Łącznik nie używa tej zmiennej. Jeśli chcesz użyć biblioteki znajdującej się w niestandardowym katalogu, musisz użyć -Lparametru polecenia, jak poniżej:

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

Jeżeli po pobraniu i istniejącego projektu i nie wie jak zmodyfikować istniejący Makefile (y) bez rozbijania całą kompilację można uruchomić zrobić w następujący sposób:

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

Zmienna LDFLAGS (która może być również zdefiniowana w pliku Makefile) służy do przekazywania określonych argumentów do linkera ( ld) po uruchomieniu przez kompilację.

Benoit
źródło
1
Dostałem ld: warning: cannot find entry symbol _start; not setting start addresskiedy ld -lcuda -L/usr/local/cuda/lib64
uciekłem
@Arash: czy zainstalowałeś wersję libcuda wymaganą przez obiekt, który próbujesz skompilować?
Benoit,
ten sam problem co @Arash i tak, mam poprawną wersję libcuda
Mohsin Bukhari
2

Możesz tworzyć linki zamiast dodawać ścieżki:

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
chaos
źródło
nie mam / usr / local / lib64 /, mam / usr / local / lib /
Arash
1

Naprawiłem to! Przejdź do swojego makefile i zmień

/usr/local/cuda/

do

/usr/local/cuda-7.0

(jeśli to masz)

To zadziałało dla mnie

Antony Savvidi
źródło
0

Rozwiązany

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/

LUB skopiuj wszystkie pliki nagłówkowe z /usr/lib/cuda-10.1/targets/x86_64-linux/include do / src / cpp /

Działa dla mnie w Pop-OS 19.10

Ghanshyam Chandra
źródło